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

Re: [PATCH] git-cat-file.txt: Document --textconv

From
Michael J Gruber <git@drmicha.warpmail.net>
Date
Jun 25, 2010, 09:04 UTC
Message-ID
<4C24710A.7000506@drmicha.warpmail.net>
In-Reply-To
<7vocf0chwa.fsf@alter.siamese.dyndns.org>
Junio C Hamano venit, vidit, dixit 24.06.2010 22:09:
Show 12 quoted lines
> Michael J Gruber <git@drmicha.warpmail.net> writes:
> 
>> Wait a minute:
>>
>> git show HEAD:path >a
>> git show :path >b
>> diff a b
>>
>> Oh no! We've been having this all along. This is bad but probably
>> unchangeable.
> 
> There is nothing "bad" about this, unless you forgot about the index.
I'll object to the "unless"...
> The comparision target of "git diff" defaults to the index, not HEAD, if
> you want other precedents.

...but agree here. Do we have a logic/principle which determines whether "empty ref" means HEAD or INDEX (which doesn't exist, of course)?

> 
> If you kept telling others that "everything defaults to HEAD", it is
> indeed bad, but that can be fixed ;-).
I'll promise to be more careful ;-)
But I still think the situation is unfortunate:
rm -Rf tt && mkdir tt && cd tt && git init
echo a >f && git add f && git commit -m a
echo b >f && git add f && git commit -m b
echo c >f && git add f && echo d >f
for c in "show --oneline f" "show --oneline :f" "diff f"; do
  echo "#git $c"
  git $c
done
produces

#git show --oneline f 3b977dc b

diff --git a/f b/f
index 7898192..6178079 100644
--- a/f
+++ b/f
@@ -1 +1 @@
-a
+b
#git show --oneline :f
c
#git diff f
diff --git i/f w/f
index f2ad6c7..4bcfe98 100644
--- i/f
+++ w/f
@@ -1 +1 @@
-c
+d

[I don't need "f" with "show" or "diff" nor "--oneline" with ":f", of
course.]

I know why it does that, but I think it's confusing that "show :f" does
not show the version of f which is the endpoint of the comparison for
the diff shown by "git show", which is the only parameter to show.

diff is different in that it really has two parameters for the two
points of comparison (which default to INDEX and WORKTREE), and by
giving one you specify the startpoint.

> 
>> I was going with the usage line, but you are right: <a>:<b> makes more
>> sense semantically and is clearer.
>>>
>>> What about this:
>>>
>>> --textconv:: 
>>> 	Show the content as transformed by a textco+nv filter. In this
>>> 	case, <object> has be of the form <treeish>:<path>, or :<path>
>>> 	to run the filter on the file <path> stored in the index.
>>
>> I'll be more mathematically stubborn about "file", see v2;)
> 
> If you want to be mathematically stubborn, then I think you should prefer
> <path> in a context like this, since <treeish>:<path> is the notation to
> reach to a <blob> inside the treeish.  <file> is merely one of the two
> possible manifestations of <blob> when it is accessed through the tree
> that immediately contains it (other being <symlink>).
> 
> Most importantly, "cat-file blob <blob>" codepath has nothing to do with
> that "should this <blob> materialize as a <file> or a <symlink>?" logic,
> so saying <file> is doubly wrong in this context.

Yes. Maybe my remark was ambiguous, but from my v2 you can see what I
meant: not "on the file <path> stored in the index", but "content
recorded in the index at <path>".

Michael
Previous: Junio C Hamano
Message 22 of 22 in “git-cat-file.txt: Document --textconv”
  1. git-cat-file.txt: Document --textconvMichael J Gruber, Jun 24, 2010
  2. Matthieu MoyJun 24, 2010
  3. Michael J GruberJun 24, 2010
  4. [PATCHv2] git-cat-file.txt: Document --textconvMichael J Gruber, Jun 24, 2010
  5. Matthieu MoyJun 24, 2010
  6. Junio C HamanoJun 24, 2010
  7. git-rev-parse.txt: Document ":path" specifierMichael J Gruber, Jun 24, 2010
  8. Junio C HamanoJun 24, 2010
  9. [PATCHv2] git-rev-parse.txt: Document ":path" specifierMichael J Gruber, Jun 25, 2010
  10. Matthieu MoyJun 25, 2010
  11. Junio C HamanoJun 25, 2010
  12. [PATCHv3] git-rev-parse.txt: Document ":path" specifierMichael J Gruber, Jun 27, 2010
  13. Junio C HamanoJun 27, 2010
  14. Michael J GruberJun 27, 2010
  15. Matthieu MoyJun 28, 2010
  16. git-rev-parse.txt: Add more examples for caret and colonMichael J Gruber, Jun 28, 2010
  17. Peter KjellerstedtJun 28, 2010
  18. Michael J GruberJun 28, 2010
  19. [PATCHv2] git-rev-parse.txt: Add more examples for caret and colonMichael J Gruber, Jun 28, 2010
  20. Junio C HamanoJun 25, 2010
  21. Junio C HamanoJun 24, 2010
  22. Michael J GruberJun 25, 2010

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.