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

[PATCH 1/7] t5700: document a failure of alternates to affect fetch

From
mhagger@alum.mit.edu <mhagger@alum.mit.edu>
Date
Feb 11, 2012, 06:20 UTC
Message-ID
<1328941261-29746-2-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1328941261-29746-1-git-send-email-mhagger@alum.mit.edu>
From: Michael Haggerty <mhagger@alum.mit.edu>

If an alternate supplies some, but not all, of the objects needed for a fetch, fetch-pack nevertheless generates "want" lines for the alternate objects that are present. Demonstrate this problem via a failing test.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 t/t5700-clone-reference.sh |   34 +++++++++++++++++++++++++++++++---
 1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/t/t5700-clone-reference.sh b/t/t5700-clone-reference.sh
index c4c375a..2dafee8 100755
--- a/t/t5700-clone-reference.sh
+++ b/t/t5700-clone-reference.sh
@@ -52,13 +52,13 @@ test_cmp expected current'
 
 cd "$base_dir"
 
-rm -f "$U"
+rm -f "$U.D"
 
 test_expect_success 'cloning with reference (no -l -s)' \
-'GIT_DEBUG_SEND_PACK=3 git clone --reference B "file://$(pwd)/A" D 3>"$U"'
+'GIT_DEBUG_SEND_PACK=3 git clone --reference B "file://$(pwd)/A" D 3>"$U.D"'
 
 test_expect_success 'fetched no objects' \
-'! grep "^want" "$U"'
+'! grep "^want" "$U.D"'
 
 cd "$base_dir"
 
@@ -153,4 +153,32 @@ test_expect_success 'clone with reference from a tagged repository' '
 	git clone --reference=A A I
 '
 
+test_expect_success 'prepare branched repository' '
+	git clone A J &&
+	(
+		cd J &&
+		git checkout -b other master^ &&
+		echo other > otherfile &&
+		git add otherfile &&
+		git commit -m other &&
+		git checkout master
+	)
+'
+
+rm -f "$U.K"
+
+test_expect_failure 'fetch with incomplete alternates' '
+	git init K &&
+	echo "$base_dir/A/.git/objects" >K/.git/objects/info/alternates &&
+	(
+		cd K &&
+		git remote add J "file://$base_dir/J" &&
+		GIT_DEBUG_SEND_PACK=3 git fetch J 3>"$U.K"
+	) &&
+	master_object=$(cd A && git for-each-ref --format="%(objectname)" refs/heads/master) &&
+	! grep "^want $master_object" "$U.K" &&
+	tag_object=$(cd A && git for-each-ref --format="%(objectname)" refs/tags/HEAD) &&
+	! grep "^want $tag_object" "$U.K"
+'
+
 test_done
-- 
1.7.9
Previous: mhagger@alum.mit.eduNext: Junio C Hamano
Message 2 of 14 in “Make alternates affect fetch behavior”
  1. 0/7 Make alternates affect fetch behaviormhagger@alum.mit.edu, Feb 11, 2012
  2. 1/7 t5700: document a failure of alternates to affect fetchmhagger@alum.mit.edu, Feb 11, 2012
  3. Junio C HamanoFeb 13, 2012
  4. Michael HaggertyFeb 13, 2012
  5. 2/7 clone.c: move more code into the "if (refs)" conditionalmhagger@alum.mit.edu, Feb 11, 2012
  6. Junio C HamanoFeb 13, 2012
  7. 3/7 fetch-pack.c: rename some parameters from "path" to "refname"mhagger@alum.mit.edu, Feb 11, 2012
  8. Junio C HamanoFeb 13, 2012
  9. 4/7 fetch-pack.c: inline insert_alternate_refs()mhagger@alum.mit.edu, Feb 11, 2012
  10. 5/7 everything_local(): mark alternate refs as completemhagger@alum.mit.edu, Feb 11, 2012
  11. 6/7 clone: do not add alternate references to extra_refsmhagger@alum.mit.edu, Feb 11, 2012
  12. Junio C HamanoFeb 13, 2012
  13. 7/7 refs: remove the extra_refs APImhagger@alum.mit.edu, Feb 11, 2012
  14. Jeff KingFeb 14, 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.