Question: Convert source tarball to GIT repository

Mike McCormack mike at codeweavers.com
Sat Oct 21 09:11:18 CDT 2006


Matthew Kehrer wrote:

> Is there a way I can convert a source tarball I download to a local GIT 
> repository?

Actually, I gave this some thought.   It's possible, but complicated.

You can create your own git tree as follows:

tar jxvf wine-0.9.23.tar.bz2 | sed s/^wine-0.9.23\\/// > list
cd wine-0.9.23
git init-db
git update-index --add `cat ../list`
git commit -m "Import of wine-0.9.23"

This should result in the message (the SHA-1 ID should match!):

Committing initial tree c8369ac44e507d96073ca57e9a0a1e77f5ec9511

This will give you a git tree with no history.  The problem is then to 
keep it updated.  Searching for that tree id in the Wine Git tree shows:

  git rev-list --header HEAD | less

...

7affdd4c7cadc3aa90c3e1e053321f4712a6f07d
tree c8369ac44e507d96073ca57e9a0a1e77f5ec9511
parent a348e0936af6de2650b424d3e90ed81b5c10e9ca
author Alexandre Julliard <julliard at winehq.org> 1160750619 +0200
committer Alexandre Julliard <julliard at winehq.org> 1160750619 +0200

     Release 0.9.23.

So we can make the SHA1 ID of the *tree* line up, thus we have the same 
tree.  Given the same tree, we can find a commit ID we should be able to 
generate a Git patch mailbox that updates your Git tree inline with the 
latest Wine Git, without needing the entire history.

So the initial download would be about 10Mb for the wine source tarball, 
then a bunch of patches in git mailbox format for each update.

I'll see if I can setup some scripts to do this more automatically.

Mike



More information about the wine-devel mailing list