git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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
Previous: Jacob Helwig
Message 3 of 3 in “git-svn with multiple remote repositories?”
  1. Josef WolfDec 2, 2008
  2. Jacob HelwigDec 2, 2008
  3. Michael J GruberDec 3, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.