Re: Identify Commit ID from an Extracted Source Snapshot
- From
- Michael Schubert <mschub@elegosoft.com>
- Date
- Feb 16, 2012, 23:43 UTC
- Message-ID
- <4F3D94A1.2040706@elegosoft.com>
- In-Reply-To
- <4F3D8EFF.9000806@vilain.net>
On 02/17/2012 12:19 AM, Sam Vilain wrote:
Show 32 quoted lines
> 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.
I totally disregared the "slicing and rebuilding history approach", just because I didn't think that's what James is asking about. Could be fun.