mirror of
https://github.com/git/git
synced 2024-09-29 21:27:13 +00:00
Merge branch 'ps/ls-remote-out-of-repo-fix' into maint-2.46
A recent update broke "git ls-remote" used outside a repository, which has been corrected. * ps/ls-remote-out-of-repo-fix: builtin/ls-remote: fall back to SHA1 outside of a repo
This commit is contained in:
commit
a991ffff92
|
@ -91,6 +91,21 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||||
dest = argv[0];
|
dest = argv[0];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: This is buggy, but required for transport helpers. When a
|
||||||
|
* transport helper advertises a "refspec", then we'd add that to a
|
||||||
|
* list of refspecs via `refspec_append()`, which transitively depends
|
||||||
|
* on `the_hash_algo`. Thus, when the hash algorithm isn't properly set
|
||||||
|
* up, this would lead to a segfault.
|
||||||
|
*
|
||||||
|
* We really should fix this in the transport helper logic such that we
|
||||||
|
* lazily parse refspec capabilities _after_ we have learned about the
|
||||||
|
* remote's object format. Otherwise, we may end up misparsing refspecs
|
||||||
|
* depending on what object hash the remote uses.
|
||||||
|
*/
|
||||||
|
if (!the_repository->hash_algo)
|
||||||
|
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||||
|
|
||||||
packet_trace_identity("ls-remote");
|
packet_trace_identity("ls-remote");
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
|
|
|
@ -402,4 +402,17 @@ test_expect_success 'v0 clients can handle multiple symrefs' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'helper with refspec capability fails gracefully' '
|
||||||
|
mkdir test-bin &&
|
||||||
|
write_script test-bin/git-remote-foo <<-EOF &&
|
||||||
|
echo import
|
||||||
|
echo refspec ${SQ}*:*${SQ}
|
||||||
|
EOF
|
||||||
|
(
|
||||||
|
PATH="$PWD/test-bin:$PATH" &&
|
||||||
|
export PATH &&
|
||||||
|
test_must_fail nongit git ls-remote foo::bar
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue