Skip to content

Commit

Permalink
t/t5400: demonstrate breakage caused by informational message from prune
Browse files Browse the repository at this point in the history
When receive-pack triggers 'git gc --auto' and 'git prune' is called to
remove a stale temporary object, 'git prune' prints an informational
message to stdout about the file that it will remove.  Since this message
is written to stdout, it is sent back over the transport channel to the git
client which tries to interpret it as part of the pack protocol and then
promptly terminates with a complaint about a protocol error.

Introduce a test which exercises the auto-gc functionality of receive-pack
and demonstrates this breakage.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brandon Casey authored and Junio C Hamano committed Aug 7, 2012
1 parent d0f1ea6 commit 2c3fd4b
Showing 1 changed file with 35 additions and 0 deletions.
35 changes: 35 additions & 0 deletions t/t5400-send-pack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,41 @@ test_expect_success 'push --all excludes remote-tracking hierarchy' '
)
'

test_expect_failure '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() {
rm -rf parent child &&
mkdir parent &&
Expand Down

0 comments on commit 2c3fd4b

Please sign in to comment.