Jeff King [off-list ref] writes:
Is it better for "rev-parse" to be more careful, and to behave more like
the rest of git? Or is better to be historically compatible?
One thing to note is that "git rev-parse HEAD" is slightly broken there
already. Because "git rev-parse $some_branch" may do very different
things than what the caller expects if $some_branch does not exist (but
there is a file with the same name). So maybe we are doing a favor by
calling out the problem; if they want a rev, they should be using
"--verify" (or "--").
I tend to agree with the reasoning in the last sentence. Let's cook
it for a while and see what happens.
Thanks.
Junio C Hamano wrote:
quoted
So maybe we are doing a favor by
calling out the problem; if they want a rev, they should be using
"--verify" (or "--").
I tend to agree with the reasoning in the last sentence. Let's cook
it for a while and see what happens.
Isn't this essentially breaking a contract that would have been relied
on by any script that used "git rev-parse HEAD~3..HEAD"? Worse, it's
breaking that contract in a way that no one would notice until they
are asked to manipulate a worktree with a file named 'HEAD~3..HEAD'
--- in other words, the breakage it introduces is painfully subtle.
I agree that "git rev-parse HEAD" is better written as "git rev-parse
--verify HEAD" and hence not so much worth worrying about, but I don't
find it easy to believe that people should have anticipated this
change and added a trailing "--" to more complex rev-parse
expressions.
So to be clear, I think unless it is protected by a new option, this
is a bad idea.
Hope that helps,
Jonathan
Jonathan Nieder wrote:
Isn't this essentially breaking a contract
To clarify, if there were some strong motivation --- e.g. if this
were resolving some security problem --- then I would be all for
breaking compatibility in this way. What's confusing to me is that I
just don't see the motivation. Why wouldn't someone that wants this
functionality be able to pass a flag for it?
Is the idea that without a flag it's easier to teach or something?
Hoping that clarifies,
Jonathan