git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] t/t5400: demonstrate breakage caused by informational message from prune

From
Brandon Casey <drafnel@gmail.com>
Date
Aug 7, 2012, 05:01 UTC
Message-ID
<1344315709-15897-1-git-send-email-drafnel@gmail.com>
In-Reply-To
<CA+sFfMdXc+usFRnCNVoke91_X2qWZARTvPHO=B7Ukxr-j7JB2g@mail.gmail.com>

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>
---
 t/t5400-send-pack.sh | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh
index 0eace37..04a8791 100755
--- a/t/t5400-send-pack.sh
+++ b/t/t5400-send-pack.sh
@@ -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 &&
-- 
1.7.12.rc1.17.g9a7365c
Previous: Brandon CaseyNext: Brandon Casey
Message 4 of 15 in “Did we break receive-pack recently?”
  1. Junio C HamanoAug 5, 2012
  2. Brandon CaseyAug 6, 2012
  3. Brandon CaseyAug 6, 2012
  4. 1/2 t/t5400: demonstrate breakage caused by informational message from pruneBrandon Casey, Aug 7, 2012
  5. 2/2 prune.c: only print informational message in show_only or verbose modeBrandon Casey, Aug 7, 2012
  6. Junio C HamanoAug 7, 2012
  7. Junio C HamanoAug 7, 2012
  8. Brandon CaseyAug 7, 2012
  9. Jeff KingAug 7, 2012
  10. Brandon CaseyAug 7, 2012
  11. Junio C HamanoAug 7, 2012
  12. Junio C HamanoAug 7, 2012
  13. Jeff KingAug 7, 2012
  14. Brandon CaseyAug 7, 2012
  15. Jeff KingAug 7, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.