Subject: Re: Identify Commit ID from an Extracted Source Snapshot

From: Sam Vilain <[email-masked]>
Date: Thu, 16 Feb 2012 15:19:27 -0800

On 2/16/12 3:00 PM, Michael Schubert wrote:
> On 02/16/2012 11:06 PM, James Walmsley wrote:
>> I couldn't find this on google, and I have no idea if its even
>> possible. I have several zip files from previous versions of my
>> source code. (I imported svn into git). I would like to add TAGS to
>> git which represent the versions based on the files in my zip
>> archives.
>>
>> Does anyone know how to do this?
>
> If it's just about providing the ancient code together with the
> (imported) more recent history from SVN, you could create an extra
> orphan branch for each zip packet, add the files, commit and
> eventually tag.
>
> If your question is more like "how do I tell git to find out where
> this old code fits in my history and eventually place it there",
> the answer is: you cannot do it. No VCS will do this and especially
> not Git.

Once you've got a tree in git which corresponds to the contents of the 
zip file, you can use git diff --stat TREEID COMMITID

You can get the commitid by obtaining the most recent timestamp for a 
file within the archive, then just using git rev-list --all --since=... 
--until=... to get a window of commit IDs, and hunt around until you 
find the one with the smallest diff.

It's hardly a straightforward thing, usually because the contents of the 
zip file never quite match the exact contents of source control—think 
autoconf and other files generated for distribution but not stored in 
the history.  So you need to use a fuzzy search.

Sam