Re: Finding a commit
- From
Thomas Rast <trast@student.ethz.ch>
- Date
- Oct 21, 2009, 12:37 UTC
- Message-ID
- <200910211437.39166.trast@student.ethz.ch>
- In-Reply-To
- <9accb4400910210530k75a763cbtbc9294d937de9242@mail.gmail.com>
Daniele Segato wrote:
> On Wed, Oct 21, 2009 at 1:29 PM, Soham Mehta <soham@box.net> wrote: > > Because SHA1 can change if a commit is cherry-picked around, I cannot just > > grep for that SHA1 from git-rev-list or git-log on 'y'. I need a way to know > > if a commit with identical changes (as in 'x') is also present in 'y'.
man git-patch-id (online at http://git.or.cz/man/git-patch-id).
Note that if the cherry-pick conflicted, you'll get a different patch-id.
Show 12 quoted lines
> I'm really not an expert of git.. > > but A commit is something like: > > Commit -> Tree ---> Blob1, Blob2, Blob3 > > Commit, Trees and Blobs are all identified by sha1 > the commit should keep information on the author, the "parent" > commit(s) and so on.. > the tree should just keep the "snapshot" of the data.. > > so I think that if you search for the SHA-1 of the tree you should be fine..
Not if you really want to find out if X was cherry-picked into this repository, because the tree is the *final state* at that commit, which of course includes all preceding changes.
So suppose you have two patches A.diff and B.diff introducing files of the same name; then if you combine them into history as
A -- B
the tree state at B has both files, and hence is different from the tree state of B' in
B' -- A'
because there it only has the file B.
--
Thomas Rast
trast@{inf,student}.ethz.ch