[sugar] etoys - binary blob in GIT

Joshua N Pritikin jpritikin
Sat Feb 10 04:49:56 EST 2007


On Sat, Feb 10, 2007 at 04:35:07AM +0900, Yoshiki Ohshima wrote:
> > >   What the Etoys team actually uses for our own change management is
> > > called "update stream" mechanism.  That is a sequence of small patches
> > > in text.  These patches are kept on an FTP/HTTP or WebDAV/HTTP server,
> > > and the developers submit the patches via FTP or WebDAV, and other
> > > users and developers fetches them via WebDAV or HTTP into their EToys
> > > image.  The image in the git repository is made in this way.  95% of
> > > the case, it is enough to recreate a "practically" identical image by
> > > merely fetching the patches.
> > 
> > I think the proper way to do that is to clean the upgrade directory 
> > after each commit so that the upgrade directory only keeps patches for 
> > the current changeset.
> 
>   I'm not sure what is the upgrade directory, so not sure the upside
> of this is.  Can you elaborate?

Sure, something like this:

$ export IMAGE=$HOME/etoys.image
$ cd etoys
$ git init-db
$ echo 1 > image-version
$ git add image-version
$ mkdir upgrade
$ cd upgrade
$ ls
patch1	patch2

# These patches are the "update stream" from the previous commit to the 
# current commit.

$ cat patch1
touch $IMAGE
$ cat patch2
echo abc >> $IMAGE
$ cd ..
$ git add patch1 patch2
$ git commit -a

# After every commit, you can remove the previous update stream.

$ git rm upgrade/*

# Here is the update stream for the next commit:

$ echo 2 > image-version
$ cat upgrade/patch1
echo def >> $IMAGE
$ git add upgrade/patch1
$ git commit -a
$ git rm upgrade/*

# Etc

Now you have a history of the update stream and you know which image 
belongs with which commit.


More information about the Sugar-devel mailing list