mirror of
https://github.com/git/git.git
synced 2024-10-28 12:59:41 +01:00
Merge branch 'jt/transfer-fsck-across-packs-fix'
The code to fsck objects received across multiple packs during a single git fetch session has been broken when the packfile URI feature was in use. A workaround has been added by disabling the codepath to avoid keeping a packfile that is too small. * jt/transfer-fsck-across-packs-fix: fetch-pack: do not mix --pack_header and packfile uri
This commit is contained in:
commit
6c46f864e5
2 changed files with 23 additions and 2 deletions
|
@ -846,7 +846,7 @@ static int get_pack(struct fetch_pack_args *args,
|
|||
else
|
||||
demux.out = xd[0];
|
||||
|
||||
if (!args->keep_pack && unpack_limit) {
|
||||
if (!args->keep_pack && unpack_limit && !index_pack_args) {
|
||||
|
||||
if (read_pack_header(demux.out, &header))
|
||||
die(_("protocol error: bad pack header"));
|
||||
|
@ -879,7 +879,7 @@ static int get_pack(struct fetch_pack_args *args,
|
|||
strvec_push(&cmd.args, "-v");
|
||||
if (args->use_thin_pack)
|
||||
strvec_push(&cmd.args, "--fix-thin");
|
||||
if (do_keep && (args->lock_pack || unpack_limit)) {
|
||||
if ((do_keep || index_pack_args) && (args->lock_pack || unpack_limit)) {
|
||||
char hostname[HOST_NAME_MAX + 1];
|
||||
if (xgethostname(hostname, sizeof(hostname)))
|
||||
xsnprintf(hostname, sizeof(hostname), "localhost");
|
||||
|
|
|
@ -881,6 +881,27 @@ test_expect_success 'part of packfile response provided as URI' '
|
|||
test_line_count = 6 filelist
|
||||
'
|
||||
|
||||
test_expect_success 'packfile URIs with fetch instead of clone' '
|
||||
P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
|
||||
rm -rf "$P" http_child log &&
|
||||
|
||||
git init "$P" &&
|
||||
git -C "$P" config "uploadpack.allowsidebandall" "true" &&
|
||||
|
||||
echo my-blob >"$P/my-blob" &&
|
||||
git -C "$P" add my-blob &&
|
||||
git -C "$P" commit -m x &&
|
||||
|
||||
configure_exclusion "$P" my-blob >h &&
|
||||
|
||||
git init http_child &&
|
||||
|
||||
GIT_TEST_SIDEBAND_ALL=1 \
|
||||
git -C http_child -c protocol.version=2 \
|
||||
-c fetch.uriprotocols=http,https \
|
||||
fetch "$HTTPD_URL/smart/http_parent"
|
||||
'
|
||||
|
||||
test_expect_success 'fetching with valid packfile URI but invalid hash fails' '
|
||||
P="$HTTPD_DOCUMENT_ROOT_PATH/http_parent" &&
|
||||
rm -rf "$P" http_child log &&
|
||||
|
|
Loading…
Reference in a new issue