RE: Any way to get complete diff up to a tag?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]