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

Re: bug? in checkout with ambiguous refnames

From
Jeff King <peff@peff.net>
Date
Jan 7, 2011, 19:54 UTC
Message-ID
<20110107195417.GC6175@sigill.intra.peff.net>
In-Reply-To
<20110107194909.GB6175@sigill.intra.peff.net>
On Fri, Jan 07, 2011 at 02:49:09PM -0500, Jeff King wrote:
Show 7 quoted lines
> That being said, it probably would make more sense for "git checkout" to
> prefer branches to tags. That's probably going to take a lot more
> surgery, and we're in -rc right now. So I think the best thing to do is
> to fix the broken message and add some tests, and then if somebody wants
> to revisit it with a larger patch, they can do so on top.
> 
> I'll work on the first part and post a patch in a few minutes.

Ah, never mind. After reading Junio's response, it looks like we already try to do the right thing in checkout, but it's just broken. So forget my two-step plan.

Here is the test script I worked out which shows the issue (and checks that the right messages are shown to the user):

---
 t/t2019-checkout-amiguous-ref.sh |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)
 create mode 100755 t/t2019-checkout-amiguous-ref.sh
diff --git a/t/t2019-checkout-amiguous-ref.sh b/t/t2019-checkout-amiguous-ref.sh
new file mode 100755
index 0000000..12edce8
--- /dev/null
+++ b/t/t2019-checkout-amiguous-ref.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+test_description='checkout handling of ambiguous (branch/tag) refs'
+. ./test-lib.sh
+
+test_expect_success 'setup ambiguous refs' '
+	test_commit branch file &&
+	git branch ambiguity &&
+	test_commit tag file &&
+	git tag ambiguity &&
+	test_commit other file
+'
+
+test_expect_success 'checkout ambiguous ref succeeds' '
+	git checkout ambiguity >stdout 2>stderr
+'
+
+test_expect_success 'checkout produces ambiguity warning' '
+	grep "warning.*ambiguous" stderr
+'
+
+test_expect_failure 'checkout chooses branch over tag' '
+	echo branch >expect &&
+	test_cmp expect file
+'
+
+test_expect_success 'checkout reports switch to detached HEAD' '
+	grep "Switched to branch" stderr &&
+	! grep "^HEAD is now at" stderr
+'
+
+test_done
-- 
1.7.4.rc1.23.g84303
Previous: Jeff KingNext: Junio C Hamano
Message 4 of 23 in “bug? in checkout with ambiguous refnames”
  1. Uwe Kleine-KönigJan 7, 2011
  2. Junio C HamanoJan 7, 2011
  3. Jeff KingJan 7, 2011
  4. Jeff KingJan 7, 2011
  5. Junio C HamanoJan 7, 2011
  6. Junio C HamanoJan 7, 2011
  7. Jeff KingJan 11, 2011
  8. Junio C HamanoJan 11, 2011
  9. Jeff KingJan 11, 2011
  10. Jeff KingJan 12, 2011
  11. Junio C HamanoJan 12, 2011
  12. Jeff KingJan 12, 2011
  13. Jeff KingJan 11, 2011
  14. Jeff KingJan 11, 2011
  15. Jeff KingJan 11, 2011
  16. Martin von ZweigbergkJan 8, 2011
  17. Jeff KingJan 8, 2011
  18. Martin von ZweigbergkJan 9, 2011
  19. Junio C HamanoJan 9, 2011
  20. Martin von ZweigbergkJan 9, 2011
  21. Uwe Kleine-KönigJan 12, 2011
  22. Jeff KingJan 12, 2011
  23. Uwe Kleine-KönigJan 12, 2011

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.