git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] contrib/subtree: verify HEAD is valid before adding a subtree
@ 2025-02-10  2:11 Bingwu Zhang
  2025-02-10 16:28 ` Junio C Hamano
  0 siblings, 1 reply; 3+ messages in thread
From: Bingwu Zhang @ 2025-02-10  2:11 UTC (permalink / raw)
  To: Junio C Hamano, git; +Cc: Bingwu Zhang, apenwarr

From: Bingwu Zhang <xtex@aosc.io>

After initializing a new repository or switching to a orphan branch,
HEAD is a symbolic reference to refs/heads/xxx while the pointed branch
head does not exist until a initial commit.

"git subtree add" will try to ensure that working tree and index are
clean, but as HEAD is invalid, diff-index always fails:
  fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
  Use '--' to separate paths from revisions, like this:
  'git <command> [<revision>...] -- [<file>...]'
  fatal: working tree has modifications.  Cannot add.
It says "working tree has modifications" but it is not the case.

Add a check using "git show-ref --verify" to ensure that HEAD is a valid
reference and give a clearer error message.

Signed-off-by: Bingwu Zhang <xtex@aosc.io>
---
 contrib/subtree/git-subtree.sh | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 15ae86db1b27..41eb816e454a 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -770,6 +770,11 @@ copy_or_skip () {
 # Usage: ensure_clean
 ensure_clean () {
 	assert test $# = 0
+	# verify HEAD, or else "git diff-index HEAD" will fail
+	if ! git show-ref --verify --quiet HEAD 2>&1
+	then
+		die "fatal: HEAD is not a valid reference.   Subtree cannot be committed as the first commit of a branch."
+	fi
 	if ! git diff-index HEAD --exit-code --quiet 2>&1
 	then
 		die "fatal: working tree has modifications.  Cannot add."

base-commit: f93ff170b93a1782659637824b25923245ac9dd1
-- 
2.48.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-02-11  1:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-10  2:11 [PATCH] contrib/subtree: verify HEAD is valid before adding a subtree Bingwu Zhang
2025-02-10 16:28 ` Junio C Hamano
2025-02-11  1:13   ` Bingwu Zhang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).