On Tue, 24 Oct 2006, Han-Wen Nienhuys wrote: > > Hello there, > > I'm just starting out with GIT. Initially, I want to use experiment with > integrating it into our binary builder structure for LilyPond. > > The binary builder roughly does this: > > 1. get source code updates from a server to a single, local > repository. This is currently a git repository that is that > tracks our CVS server. > > 2. copy latest commit from a branch to separate source directory. > This copy should only update files that changed. > > 3. Incrementally compile from that source directory The terminology in the git world is, I think, a little different from what you expect. We call the thing that contains all of the tracked information (what you're calling the repository) the "object database"; what we call the "repository" is a bit different: it primarily keeps track of the heads of branches, in addition to either containing an object database or referencing an external one. So you need a repository for each source directory (because it keeps track of what commit is currently in the source directory), but it doesn't need to have its own complete object database, which is what you're trying to share between all of them. You have a single repository with no source directory that contains the database and the heads according to the upstream source, and then each source directory has a repository that contains the head as far as you've built it in that directory. You fetch into the single bare repository from upstream, and then pull into each source directory from the bare repository; this will do the minimal update to the contents of the source directory automatically. I think that you want to request a few git features: - support having a bare repository not on a branch, so that it can fetch all heads from its upstream. You're not doing anything branch-specific in the bare repository anyway, but git currently wants a valid HEAD to accept a path as containing a git repository - support getting an origin remote configuration with a bare repository - support cloning a branch of a repository, such that the clone's "origin" is the upstream's chosen branch, not its "master". - support cloning without generating a "master" branch in the clone, and instead starting on "origin" Then you do: git clone --bare --no-head --with-origin <upstream> REPOSITORY.git for each branch: git clone --shared --branch=<branch> --no-master REPOSITORY.git <branch> When you want to update: GIT_DIR=REPOSITORY.git git fetch for each branch: (cd <branch>; git pull; make) Note that all of the features you need are in "clone" for setting things up nicely automatically; if you arrange everything by hand just right, you can already to the updating procedure I give. -Daniel *This .sig left intentionally blank* - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html