Re: git-svn with multiple remote repositories?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Josef Wolf venit, vidit, dixit 02.12.2008 22:39:
> 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
--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux