Message ID | 20241023153736.257733-2-bence@ferdinandy.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | set-head/fetch remote/HEAD updates | expand |
Bence Ferdinandy <bence@ferdinandy.com> writes: > Consider the bare repository called "mirror" in the test. Running `git > remote add --mirror -f origin ../one` will not change HEAD, consequently > if init.defaultBranch is not the same as what HEAD in the remote > ("one"), HEAD in "mirror" will be pointing to a non-existent reference. > Hence if "mirror" is used as a remote by yet another repository, > ls-remote will not show HEAD. On the other hand, if init.defaultBranch > happens to match HEAD in "one", then ls-remote will show HEAD. Making sure that the hardcoded (in the Git binary) default branch name would not affect the outcome of the test is a good thing to do. I like the patch text, but ... > Since the CI globally exports GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main, > there's a drift between how the test repositories are set up in the CI > and during local testing. This issue does not manifest currently, as the > test does not do any remote HEAD manipulation where this would come up, > but should such things be added, a locally passing test would break the > CI vice-versa. ... this description may not quite be accurate. Don't some jobs of CI use 'main' while the rest use 'master'?
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index 532035933f..9b50276646 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -2,6 +2,9 @@ test_description='git remote porcelain-ish' +GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main +export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + TEST_PASSES_SANITIZE_LEAK=true . ./test-lib.sh
Consider the bare repository called "mirror" in the test. Running `git remote add --mirror -f origin ../one` will not change HEAD, consequently if init.defaultBranch is not the same as what HEAD in the remote ("one"), HEAD in "mirror" will be pointing to a non-existent reference. Hence if "mirror" is used as a remote by yet another repository, ls-remote will not show HEAD. On the other hand, if init.defaultBranch happens to match HEAD in "one", then ls-remote will show HEAD. Since the CI globally exports GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main, there's a drift between how the test repositories are set up in the CI and during local testing. This issue does not manifest currently, as the test does not do any remote HEAD manipulation where this would come up, but should such things be added, a locally passing test would break the CI vice-versa. Set GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main in the test to be consistent with the CI. Signed-off-by: Bence Ferdinandy <bence@ferdinandy.com> --- Notes: v9: - new patch - a bandaid for the CI issue noticed by Taylor (cf: https://lore.kernel.org/git/Zw8IKyPkG0Hr6%2F5t@nand.local/), but see https://lore.kernel.org/git/D4ZAELFWJMKN.S88LJ6YK31LZ@ferdinandy.com/ for the root cause in detail v10: no change v11: no change v12: added forgotten sign-off t/t5505-remote.sh | 3 +++ 1 file changed, 3 insertions(+)