[PATCH] subtree: validate --prefix against commit in split
From: Pushkar Singh <hidden>
Date: 2026-01-15 12:10:18
Subsystem:
the rest · Maintainer:
Linus Torvalds
--- contrib/subtree/git-subtree.sh | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 17106d1a72..a1b60eac8b 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh@@ -257,6 +257,9 @@ main () { test -e "$arg_prefix" && die "fatal: prefix '$arg_prefix' already exists." ;; + split) + # checked later against the commit, not the working tree + ;; *) test -e "$arg_prefix" || die "fatal: '$arg_prefix' does not exist; use 'git subtree add'"
@@ -958,13 +961,19 @@ cmd_add_commit () { cmd_split () { if test $# -eq 0 then - rev=$(git rev-parse HEAD) + rev=$(git rev-parse HEAD) elif test $# -eq 1 || test $# -eq 2 then - rev=$(git rev-parse -q --verify "$1^{commit}") || - die "fatal: '$1' does not refer to a commit" + rev=$(git rev-parse -q --verify "$1^{commit}") || + die "fatal: '$1' does not refer to a commit" else - die "fatal: you must provide exactly one revision, and optionally a repository. Got: '$*'" + die "fatal: you must provide exactly one revision, and optionally a repository. Got: '$*'" + fi + + # Now validate prefix against the commit, not the working tree + if ! git ls-tree -d "$rev" -- "$dir" >/dev/null + then + die "fatal: '$dir' does not exist in commit $rev" fi repository="" if test "$#" = 2
--
2.43.0