Merge branch 'bc/receive-pack-stdout-protection' into maint-1.7.11
When "git push" triggered the automatic gc on the receiving end, a message from "git prune" that said it was removing cruft leaked to the standard output, breaking the communication protocol. * bc/receive-pack-stdout-protection: receive-pack: do not leak output from auto-gc to standard output t/t5400: demonstrate breakage caused by informational message from prune
This commit is contained in:
commit
3f664638e5
@ -977,7 +977,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
|||||||
const char *argv_gc_auto[] = {
|
const char *argv_gc_auto[] = {
|
||||||
"gc", "--auto", "--quiet", NULL,
|
"gc", "--auto", "--quiet", NULL,
|
||||||
};
|
};
|
||||||
run_command_v_opt(argv_gc_auto, RUN_GIT_CMD);
|
int opt = RUN_GIT_CMD | RUN_COMMAND_STDOUT_TO_STDERR;
|
||||||
|
run_command_v_opt(argv_gc_auto, opt);
|
||||||
}
|
}
|
||||||
if (auto_update_server_info)
|
if (auto_update_server_info)
|
||||||
update_server_info(0);
|
update_server_info(0);
|
||||||
|
@ -145,6 +145,41 @@ test_expect_success 'push --all excludes remote-tracking hierarchy' '
|
|||||||
)
|
)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'receive-pack runs auto-gc in remote repo' '
|
||||||
|
rm -rf parent child &&
|
||||||
|
git init parent &&
|
||||||
|
(
|
||||||
|
# Setup a repo with 2 packs
|
||||||
|
cd parent &&
|
||||||
|
echo "Some text" >file.txt &&
|
||||||
|
git add . &&
|
||||||
|
git commit -m "Initial commit" &&
|
||||||
|
git repack -adl &&
|
||||||
|
echo "Some more text" >>file.txt &&
|
||||||
|
git commit -a -m "Second commit" &&
|
||||||
|
git repack
|
||||||
|
) &&
|
||||||
|
cp -a parent child &&
|
||||||
|
(
|
||||||
|
# Set the child to auto-pack if more than one pack exists
|
||||||
|
cd child &&
|
||||||
|
git config gc.autopacklimit 1 &&
|
||||||
|
git branch test_auto_gc &&
|
||||||
|
# And create a file that follows the temporary object naming
|
||||||
|
# convention for the auto-gc to remove
|
||||||
|
: >.git/objects/tmp_test_object &&
|
||||||
|
test-chmtime =-1209601 .git/objects/tmp_test_object
|
||||||
|
) &&
|
||||||
|
(
|
||||||
|
cd parent &&
|
||||||
|
echo "Even more text" >>file.txt &&
|
||||||
|
git commit -a -m "Third commit" &&
|
||||||
|
git send-pack ../child HEAD:refs/heads/test_auto_gc >output 2>&1 &&
|
||||||
|
grep "Auto packing the repository for optimum performance." output
|
||||||
|
) &&
|
||||||
|
test ! -e child/.git/objects/tmp_test_object
|
||||||
|
'
|
||||||
|
|
||||||
rewound_push_setup() {
|
rewound_push_setup() {
|
||||||
rm -rf parent child &&
|
rm -rf parent child &&
|
||||||
mkdir parent &&
|
mkdir parent &&
|
||||||
|
Loading…
Reference in New Issue
Block a user