> -----Original Message----- > From: git-owner@xxxxxxxxxxxxxxx [mailto:git-owner@xxxxxxxxxxxxxxx] On > Behalf Of Linus Torvalds > Sent: den 6 maj 2010 19:09 > To: Peter Kjellerstedt > Cc: Johannes Sixt; git@xxxxxxxxxxxxxxx; Björn Steinbrink > Subject: RE: Any way to get complete diff up to a tag? > > On Thu, 6 May 2010, Peter Kjellerstedt wrote: > > > > Since the 4b825dc642cb6eb9a060e54bf8d69288fbee4904 SHA1 is somewhat > > cumbersome to remember, wouldn't it be an idea to give it some kind > > of alias or mnemonic? E.g., something like @~ (or some other mix of > > odd characters which do not clash with all the other similar > > constructs already used for references). > > Well, you don't strictly speaking have to "remember" it, you can always > just re-generate it. The most straightforward way to do that is > probably > > git hash-object -t tree --stdin < /dev/null Thank you, that is good to know. > although I admit that maybe we could have some syntax for "git diff" > that would do the "diff against empty tree" automatically. It does > seem to be conceptually a reasonable thing to do. > > For example, right now if you give "git diff" a single SHA1, it will > work against the working tree. Except if you add "--cached", to say > that you want the diff against the index. I don't think it would be in > any way _wrong_ to make "--root" mean that you want it against an > empty tree. > > [ We already accept "--root", but it has no meaning for "git diff" > with a single SHA1. It matters for showing the root commit for > 'git-diff-tree'. > > And means something totally different for git-format-patch ] > > So we certainly _could_ do something like > > git diff --root <treeish> I went ahead and implemented support for --root as an option to git diff (patch attached for reference). However, I then realized that there are probably more commands that would benefit from the same support, e.g., git diff-index. Then I thought about git diff-tree and realized that it could also benefit from my version of --root, but as you mentioned above, it already has a --root option with a different semantic... I also figured it would be a hassle for me to find all commands who can use a --root option, not knowing the internals of git well enough yet. So I then went back to my original idea of making an alias for the empty tree, and came up with a two line patch which I will send as a separate patch, and see what you guys think of the idea. > and make it do what you want. That said, the "empty tree" thing works > for all versions of git (well, some older versions of git need the > actual object, but you could always use "-w" on that git-hash-object > command line, and then it really should work for every git version). > > Linus //Peter
Attachment:
0001-diff-Make-git-diff-support-the-root-option.patch
Description: 0001-diff-Make-git-diff-support-the-root-option.patch