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

Re: [PATCH v2 0/3] rev-parse and "--"

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Dec 9, 2013, 20:56 UTC
Message-ID
<20131209205621.GW29959@google.com>
In-Reply-To
<xmqqob4pycmv.fsf@gitster.dls.corp.google.com>
Junio C Hamano wrote:
> I do not share the "with --verify is better hence no problem"
> reasoning.  My "not so much worth worrying about" comes solely from
> a hunch that nobody has "HEAD~3..HEAD" in their working directory,

That's what makes it a problem. This change makes it very easy to make a general-purpose script that breaks in an edge case that the script's author is not likely to run into. Then as soon as someone adds a file with such a name to the test data in their repo, their favorite general-purpose repo munger just breaks.

If we wanted to forbid git from tracking files named HEAD~3..HEAD altogether, that would be a different story.

> and if somebody has one, then they must be using "--verify" (or a
> clarifying "--"), because their "git log" and whatever they use "git
> rev-parse HEAD~3..HEAD" for would behave very differently otherwise.

Isn't protecting against this kind of thing the reason we ask authors of general-purpose scripts to use "simple, do what I say and not what I mean" plumbing commands?

Another relevant detail is that using rev-parse with "--" is more painful than without, since it includes the "--" in its output. Without this change, it seems much more likely to me that someone would do

	git rev-parse <commits> |
	while read commit
	do
		...
	done
than
	git rev-parse <commits> -- |
	while read commit
	do
		if test "$commit" = "--"
		then
			continue
		fi
		...
	done
> So it is not merely "--verify is better"---in a situation where the
> backward incompatibility matters, I doubt the existing behaves
> sensibly in the first place.
What in the former of the above two loops is broken?
> But if we cook it for a while, I suspect that we will find more and
> more breakages of expectations in the existing scripts in and out of
> the tree;

Alas, probably no, because nobody has "HEAD~3..HEAD" in their working directory. That's exactly the problem --- it creates an edge case that nobody is likely to test until the once-in-a-few-years moment when they need it.

Jonathan
Previous: Junio C HamanoNext: Junio C Hamano
Message 25 of 28 in “[BUG] redundant error message”
  1. Duy NguyenDec 5, 2013
  2. Jeff KingDec 5, 2013
  3. Junio C HamanoDec 5, 2013
  4. Jeff KingDec 5, 2013
  5. Junio C HamanoDec 5, 2013
  6. Jeff KingDec 5, 2013
  7. Jeff KingDec 5, 2013
  8. Junio C HamanoDec 5, 2013
  9. 0/2 rev-parse and "--"Jeff King, Dec 6, 2013
  10. 1/2 rev-parse: correctly diagnose revision errors before "--"Jeff King, Dec 6, 2013
  11. 2/2 rev-parse: diagnose ambiguous revision/filename argumentsJeff King, Dec 6, 2013
  12. 0/3 rev-parse and "--"Jeff King, Dec 6, 2013
  13. 1/3 rev-parse: correctly diagnose revision errors before "--"Jeff King, Dec 6, 2013
  14. Jonathan NiederDec 6, 2013
  15. 2/3 rev-parse: be more careful with munging argumentsJeff King, Dec 6, 2013
  16. Jonathan NiederDec 7, 2013
  17. Eric SunshineDec 9, 2013
  18. 3/3 rev-parse: diagnose ambiguous revision/filename argumentsJeff King, Dec 6, 2013
  19. Jonathan NiederDec 6, 2013
  20. Jeff KingDec 6, 2013
  21. Junio C HamanoDec 9, 2013
  22. Jonathan NiederDec 9, 2013
  23. Jonathan NiederDec 9, 2013
  24. Junio C HamanoDec 9, 2013
  25. Jonathan NiederDec 9, 2013
  26. Junio C HamanoDec 9, 2013
  27. Duy NguyenDec 6, 2013
  28. Jeff KingDec 6, 2013

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.