From: Junio C Hamano <gitster@pobox.com>
To: Josh Steadmon <steadmon@google.com>
Cc: Pushkar Singh <pushkarkumarsingh1970@gmail.com>, git@vger.kernel.org
Subject: Re: [PATCH v3] subtree: validate --prefix against commit in split
Date: Mon, 02 Feb 2026 13:07:58 -0800 [thread overview]
Message-ID: <xmqqjywuyhu9.fsf@gitster.g> (raw)
In-Reply-To: <7k7ewvrb5hj3jyesiigy6dvo5w5pl67rk7ihztsuxbtqpymafv@ey64nvhzhacg> (Josh Steadmon's message of "Mon, 2 Feb 2026 10:54:13 -0800")
Josh Steadmon <steadmon@google.com> writes:
> On 2026.01.15 17:52, Pushkar Singh wrote:
>> git subtree split currently validates --prefix against the working tree.
>> This breaks when splitting an older commit or when the working tree does
>> not contain the subtree, even though the commit does.
>>
>> For example:
>>
>> git subtree split --prefix=pkg <commit>
>>
>> fails if pkg was removed later, even though it exists in <commit>.
>>
>> Fix this by validating the prefix against the specified commit using
>> git ls-tree instead of the working tree.
>>
>> Add a test to ensure this behavior does not regress.
>>
>> Signed-off-by: Pushkar Singh <pushkarkumarsingh1970@gmail.com>
>
> Unfortunately, it seems this patch breaks the subtree tests. We noticed
> a failure in our build system at $WORK, and I was able to bisect the
> failure to this commit:
>
> $ git bisect start 54b18a3513eed9ed5ced5c238ade55a434fd619a 66b2238f5c17644ddf15f75a53c76faeca6d9f1e
> $ git bisect run sh -c 'make && make -C contrib/subtree && make -C contrib/subtree test'
>
> The tests fail on case 17 - split requires path given by option --prefix
> must exist.
Thanks. I am tempted to propose us doing something like this, so
that you guys do not have to every time you import my 'next'.
--- >8 ---
Subject: [PATCH] test: optionally test contrib in CI
Recently it was reported that a topic merged to 'next' broke build
and test for contrib/subtree part of the system.
Instead of having those who run 'next' or 'master' to hit the build
and test breakage and report to us, make sure we notice breakages in
contrib/ area before they hit my tree at all, during their own
presubmit testing.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
* There should be a cleaner way to make sure any new Makefile with
"test" target in contrib/* directores are added to the execution,
but for now this should do.
Makefile | 6 ++++++
ci/run-build-and-tests.sh | 2 ++
contrib/Makefile | 10 ++++++++++
3 files changed, 18 insertions(+)
create mode 100644 contrib/Makefile
diff --git a/Makefile b/Makefile
index 8aa489f3b6..d0ab8fdb04 100644
--- a/Makefile
+++ b/Makefile
@@ -342,6 +342,9 @@ include shared.mak
# If it isn't set, fallback to $LC_ALL, $LANG or use the first utf-8
# locale returned by "locale -a".
#
+# Define TEST_CONTRIB_TOO to make "make test" run tests in contrib/
+# directories.
+#
# Define HAVE_CLOCK_GETTIME if your platform has clock_gettime.
#
# Define HAVE_CLOCK_MONOTONIC if your platform has CLOCK_MONOTONIC.
@@ -3369,6 +3372,9 @@ export TEST_NO_MALLOC_CHECK
test: all
$(MAKE) -C t/ all
+ifdef TEST_CONTRIB_TOO
+ $(MAKE) -C contrib/ test
+endif
perf: all
$(MAKE) -C t/perf/ all
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 8bda62b921..b07b89f954 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -5,6 +5,8 @@
. ${0%/*}/lib.sh
+export TEST_CONTRIB_TOO=yes
+
case "$jobname" in
fedora-breaking-changes-musl|linux-breaking-changes)
export WITH_BREAKING_CHANGES=YesPlease
diff --git a/contrib/Makefile b/contrib/Makefile
new file mode 100644
index 0000000000..787cd07f52
--- /dev/null
+++ b/contrib/Makefile
@@ -0,0 +1,10 @@
+all::
+
+test::
+ $(MAKE) -C diff-highlight $@
+ $(MAKE) -C subtree $@
+
+clean::
+ $(MAKE) -C contacts $@
+ $(MAKE) -C diff-highlight $@
+ $(MAKE) -C subtree $@
--
2.53.0-154-gaa371a4585
next prev parent reply other threads:[~2026-02-02 21:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-15 12:09 [PATCH] subtree: validate --prefix against commit in split Pushkar Singh
2026-01-15 12:24 ` [PATCH v2] " Pushkar Singh
2026-01-15 16:30 ` Junio C Hamano
2026-01-15 17:52 ` [PATCH v3] " Pushkar Singh
2026-02-02 18:54 ` Josh Steadmon
2026-02-02 19:10 ` Junio C Hamano
2026-02-02 21:07 ` Junio C Hamano [this message]
2026-02-03 15:30 ` [RFH] adding test coverage for contrib/ in CI jobs Junio C Hamano
2026-02-03 17:06 ` Re* " Junio C Hamano
2026-02-03 23:09 ` Junio C Hamano
2026-02-04 4:38 ` Colin Stagner
2026-02-04 19:55 ` Junio C Hamano
2026-02-05 6:05 ` Colin Stagner
2026-02-05 16:39 ` Junio C Hamano
2026-02-05 20:54 ` Junio C Hamano
2026-02-03 21:26 ` Junio C Hamano
2026-02-03 21:53 ` Jeff King
2026-02-03 16:48 ` [PATCH v4] subtree: validate --prefix against commit in split Pushkar Singh
2026-02-03 17:37 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqjywuyhu9.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=pushkarkumarsingh1970@gmail.com \
--cc=steadmon@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox