Is there a way I can convert a source tarball I download to a local GIT repository?
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
Is this possible?
Thanks.
On Thursday, October 19, 2006 17:04, Matthew Kehrer wrote:
Is there a way I can convert a source tarball I download to a local GIT repository?
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
Is this possible?
Thanks.
I doubt it. Is there any reason you can't copy the git repository onto your flash drive?
- Neil
Matthew Kehrer wrote:
Is there a way I can convert a source tarball I download to a local GIT repository?
Not really.
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
Is this possible?
It a 20Mb Git archive any better? I'll consider maintaining a Git archive without the history before wine-0.9.23 if that would make it easier for people with modems.
Mike
Matthew Kehrer wrote:
Is there a way I can convert a source tarball I download to a local GIT repository?
Not really.
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
Is this possible?
It a 20Mb Git archive any better? I'll consider maintaining a Git archive without the history before wine-0.9.23 if that would make it easier for people with modems.
Mike
Yeah, that's better. I'll be able to get it that way as 20MB is manageable for dial-up.
On 10/20/06, Mike McCormack mike@codeweavers.com wrote:
Matthew Kehrer wrote:
Is there a way I can convert a source tarball I download to a local GIT repository?
Not really.
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
Is this possible?
It a 20Mb Git archive any better? I'll consider maintaining a Git archive without the history before wine-0.9.23 if that would make it easier for people with modems.
Mike
Speaking of which, is there any tarball I can use to make a local GIT repository? My internet access is extremely limited, anything not port 80 http gets firewalled, and it's a modem too. I need to do some regression testing with very old wine versions, so GIT is a must.
On Fri, Oct 20, 2006 at 10:00:41PM +0200, Damjan Jovanovic wrote:
Speaking of which, is there any tarball I can use to make a local GIT repository? My internet access is extremely limited, anything not port 80 http gets firewalled, and it's a modem too. I need to do some regression testing with very old wine versions, so GIT is a must.
Git can also be accessed though http. Most of the repository size should be in a few "pack" files. I don't know enough of Git to tell you their location or how to do this, but if you don't have Git available where you can download greater amounts you might be fine with just those files and obtaining the rest through your modem.
Jan
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@winehq.org 1160750619 +0200 committer Alexandre Julliard julliard@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
So what commands are needed to just update it? I understand how to set it up from what you have said.
Matthew Kehrer wrote:
So what commands are needed to just update it? I understand how to set it up from what you have said.
Well, the commands are easy enough, but they need to be done on a full repository. I'll probably have a go at modifying gitweb.pl to return the mailbox you need to update it sooner or later...
It just needs to return the output from the command below onto a web page.
git format-patch --stdout <commit id>..HEAD
The only complication is turning the tree's SHA1 ID into a commit SHA1 ID so further updates can be done. gitweb.pl needs to search back through the "git log" output and matching the tree to the commit. ie. the output from:
git log --pretty=raw | grep -B1 ^tree
Mike
Matthew Kehrer wrote:
So what commands are needed to just update it? I understand how to set it up from what you have said.
So, assuming you created a Git tree from Wine tarball 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"
And the initial tree's SHA-1 ID matches:
Committing initial tree c8369ac44e507d96073ca57e9a0a1e77f5ec9511
Download my update script from http://mandoo.dyndns.org/update.sh then change into your Wine 0.9.23 Git directory and run the script. ie.
cd wine-0.9.23 sh update.sh
This should download the latest commits from WineHQ.org via my server. The output is something like:
mike@black:~/wine-0.9.23$ sh update.sh Last tree is 5e4b428f32db20582941331a37f1cdb9f462da77 Now querying for a matching commit... Matching commit is 2cb378d498b7525eb34bd163fcc77d00fe595335 Now downloading patches... ...
Things to remember:
* You shouldn't commit to this Git tree... clone it first and commit to the clone, or branch and switch back to the original branch for updates. If you commit to the branch that updates come to, the update script won't work.
* It requires an equivalent hacked up gitweb.cgi, which is only on the website pointed to by the script at the moment.
* This is hacked together in a few hours. To get something more reliable and that might be acceptable to the Git project will take somewhat longer.
Anyway, I'd appreciate any testing anybody is willing to give the script, and any feedback.
Mike
Mike McCormack wrote, on 10/24/06 00:01 MSK:
Matthew Kehrer wrote:
So what commands are needed to just update it? I understand how to set it up from what you have said.
So, assuming you created a Git tree from Wine tarball 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"
And the initial tree's SHA-1 ID matches:
Committing initial tree c8369ac44e507d96073ca57e9a0a1e77f5ec9511
Download my update script from http://mandoo.dyndns.org/update.sh then change into your Wine 0.9.23 Git directory and run the script. ie.
cd wine-0.9.23 sh update.sh
This should download the latest commits from WineHQ.org via my server. The output is something like:
mike@black:~/wine-0.9.23$ sh update.sh Last tree is 5e4b428f32db20582941331a37f1cdb9f462da77 Now querying for a matching commit... Matching commit is 2cb378d498b7525eb34bd163fcc77d00fe595335 Now downloading patches... ...
Things to remember:
- You shouldn't commit to this Git tree... clone it first and commit to
the clone, or branch and switch back to the original branch for updates. If you commit to the branch that updates come to, the update script won't work.
- It requires an equivalent hacked up gitweb.cgi, which is only on the
website pointed to by the script at the moment.
- This is hacked together in a few hours. To get something more
reliable and that might be acceptable to the Git project will take somewhat longer.
Anyway, I'd appreciate any testing anybody is willing to give the script, and any feedback.
In two words: it works! The script took about 5 Mb of traffic to update from 0.9.23 to the current head (not too much but binary 0.9.22-0.9.23 delta is about 500 kb). Using "curl --compressed" when possible (and configuring your server to support compressed documents) should decrease traffic volume significantly.
Mike
On Thu, 19 Oct 2006 16:04:53 -0500, Matthew Kehrer wrote:
Is there a way I can convert a source tarball I download to a local GIT repository?
I have dial-up a home, but I know of a place where I can bring my flash drive and use it to get the tarball as GIT does not have resume support.
git may not, but cogito does.
I notice most people here seem to be using it. cogito is just a nicer interface on top of git; it uses git itself.
I wonder if it wouldn't be easier to describe how things are done using it, rather than git?
Anand