threads / discuss / 8018

git-svn: importing branches later

Subject: git-svn: importing branches later

## tl;dr

4 messages between May 7, 2007 and May 8, 2007.

replies: 3people: 3as markdown or json

Michael Hendricks· May 7, 2007, 19:07 UTC · lore

I've cloned the trunk of a SVN repository using git-svn and now I want to bring in just a couple of the branches from the same repository. I've not been able to discover anything that works. Basically, I've done this

$ git svn clone $URL -T trunk git-repo

Now I want to import the 'foo' branch from the same SVN repo without grabbing all the branches. Any suggestions?

Thanks.
-- 
Michael
Karl Hasselström· May 8, 2007, 08:51 UTC · re: Michael Hendricks · lore

Re: git-svn: importing branches later

On 2007-05-07 13:07:06 -0600, Michael Hendricks wrote:
> Now I want to import the 'foo' branch from the same SVN repo without
> grabbing all the branches. Any suggestions?

I seem to recall that just adding another "fetch" line to the git-svn configuration in .git/config will do this for you.

-- 
Karl Hasselström, kha@treskal.com
      www.treskal.com/kalle
Seth Falcon· May 8, 2007, 14:51 UTC · re: Karl Hasselström · lore

Re: git-svn: importing branches later

Karl Hasselström <kha@treskal.com> writes:
Show 7 quoted lines
> On 2007-05-07 13:07:06 -0600, Michael Hendricks wrote:
>
>> Now I want to import the 'foo' branch from the same SVN repo without
>> grabbing all the branches. Any suggestions?
>
> I seem to recall that just adding another "fetch" line to the git-svn
> configuration in .git/config will do this for you.

Yes, this should work. As long as you started out with a fairly recent git (sorry, I don't know how recent is needed) you should have in your repository a git/config file containing something like:

    [svn-remote "svn"]
    	url = http://main.svn.url.com/
    	fetch = trunk:refs/remotes/git-svn
    	fetch = branches/b1:refs/remotes/b1  <-- this line added by you

Then a 'git svn fetch' should pull it all down and you can checkout the branch using 'git checkout -b myb1 remotes/b1'. At this point, 'git svn rebase' is smart enough to know where the branch comes from.

What may not work when you add branches in this way is that the history may not connect with the actual branch commit in svn. I'm fairly sure there is some way to fix that, but I haven't done it.

+ seth
Michael Hendricks· May 8, 2007, 15:34 UTC · re: Seth Falcon · lore

Re: git-svn: importing branches later

On Tue, May 08, 2007 at 07:51:10AM -0700, Seth Falcon wrote:
Show 18 quoted lines
> Karl Hasselström <kha@treskal.com> writes:
> 
> > On 2007-05-07 13:07:06 -0600, Michael Hendricks wrote:
> >
> >> Now I want to import the 'foo' branch from the same SVN repo without
> >> grabbing all the branches. Any suggestions?
> >
> > I seem to recall that just adding another "fetch" line to the git-svn
> > configuration in .git/config will do this for you.
> 
> Yes, this should work.  As long as you started out with a fairly
> recent git (sorry, I don't know how recent is needed) you should have
> in your repository a git/config file containing something like:
> 
>     [svn-remote "svn"]
>     	url = http://main.svn.url.com/
>     	fetch = trunk:refs/remotes/git-svn
>     	fetch = branches/b1:refs/remotes/b1  <-- this line added by you
Thanks Seth and Karl, that does indeed work.

I noticed that after changing .git/config and running fetch, git-svn retrieves the log for the entire project (presumably because it doesn't know when the new branch was created). In one project with ~30,000 revisions, I found it beneficial to specify "git svn fetch -r 12345:HEAD" where revision 12345 is somewhere close to and before the point at which the new branch was created from trunk. That makes the initial fetch must faster.

-- 
Michael

← back to recent threads