I'm trying to figure out the most efficient way to keep an up to date `todo` branch checked out in Meta [1]. I've tried a few things like:
$ git submodule add -b refs/remotes/origin/todo --reference ./ -- ./ Meta
and:
$ git clone --single-branch --branch refs/remotes/origin/todo ./ Meta
These fail because I can't use a remote tracking branch as a
source for the clone. It should be possible to do:
$ git clone --reference . --single-branch --branch todo
git://git.kernel.org/pub/scm/git/git.git Meta
but that will require (I think) network access during a fetch.
Since I'm already fetching `origin` from the superproject, I
don't want to have to refetch them for the submodule (or whatever
Meta ends up being). Here's what I think happens with a
submodule fetch:
1. Query the remote URL to dereference its current `todo` branch.
2. Check if we have that object in our local object share (which
we should, due to --reference and a recent superproject
fetch).
3. Fetch any missing objects from the remote URL.
I want to replace step 1 with:
1b. Query the superproject to dereference its current
`origin/todo` branch.
and step 3 with:
3b. Access objects from the superproject directly (as with
--reference / --shared).
Do I need to setup something like:
[remote "origin"]
url = ../.git
fetch = +refs/remotes/origin/todo:refs/remotes/origin/todo
by hand, or is there an easier way?
I can, of course, clone a local `todo` branch if I've set one up in my
superproject. However, then I'd have to update-ref that branch to
sync with origin/todo after every fetch (that updates origin/todo).
This could be handled with a `git fetch` wrapper, but… yuck :p.
Any suggestions for an elegant solution would be appreciated :).
Once we figure something out, I can write it up and stick it in
howto/maintain-git.txt.
Cheers,
Trevor
[1]: http://article.gmane.org/gmane.comp.version-control.git/144748
--
This email may be signed or encrypted with GnuPG (http://www.gnupg.org).
For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy
signature.asc
Description: OpenPGP digital signature

