Re: git-svn with multiple remote repositories?
- From
Michael J Gruber <git@drmicha.warpmail.net>
- Date
- Dec 3, 2008, 08:45 UTC
- Message-ID
- <4936470E.6090500@drmicha.warpmail.net>
- In-Reply-To
- <20081202213930.GD12716@raven.wolf.lan>
Josef Wolf venit, vidit, dixit 02.12.2008 22:39:
Show 43 quoted lines
> Hello, > > I am trying to create a git repository with two remote svn repositories > so that I can merge/move patch-sets back and forth between the svn > repositories. > > This is what I have tried so far: > > mkdir -p project > cd project > git-svn init -R private -s https://foo.bar/repos/private > > Then I go and edit .git/config too look like this: > > [core] > repositoryformatversion = 0 > filemode = true > bare = false > logallrefupdates = true > [svn-remote "private"] > url = https://foo.bar/repos/private > fetch = trunk:refs/remotes/private/trunk > branches = branches/*:refs/remotes/private/* > tags = tags/*:refs/remotes/private/tags/* > [svn-remote "public"] > url = https://foo.bar/repos/public > fetch = trunk:refs/remotes/public/trunk > branches = branches/*:refs/remotes/public/* > tags = tags/*:refs/remotes/public/tags/* > > And finally, I do > > git-svn fetch -R private > git-svn fetch -R public > > Both commands seem to fetch the contents from their origins. But > git-branch shows me only the local master branch with contents from > the "private" svn repository. When I do > > git checkout public/trunk > > the contents actually change to reflect the "public" svn repository, > but git-branch says I am on "(no branch)" at all.
You want "git branch -a" if you want to see all branches including remotes. "master" happens to reflect "remotes/private/trunk" because the first fetch set it up like that. Further fetches will not change master.
Remote branches are your local copy, but different from local branches: you're not supposed to check them out, and if you do anyways, you get a "detached HEAD". Well, your repo gets a detached HEAD...
If you want to work with remote branches, create a tracking branch: a local branch that is based on a remote one and that is set up to rebase (or merge) new commits from the remote:
git checkout -b mypublic/trunk remotes/public/trunk
You can name the local branch any way you want, even "public/trunk", but that may lead to confusion when you look at the output of "git branch -a" which suppresses the "remote/" part.
Michael