From: Daniele Segato Date: Wed, 21 Oct 2009 13:55:22 GMT Subject: Re: Finding a commit Message-ID: <9accb4400910210655i115686c5h2d38a885c1d56d2e@mail.gmail.com> In-Reply-To: <200910211437.39166.trast@student.ethz.ch> On Wed, Oct 21, 2009 at 2:37 PM, Thomas Rast wrote: >> 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. Yes... obviously... the tree is the snapshot of a complete data set: so if you apply the same patch to different data set you get different trees... thanks for pointing it out.. :) Regards, Daniele