Jean-Francois T. Jean-Francois T. - 1 year ago 152
Git Question

Using TortoiseGit with svn-git to clone specific branches of SVN repository

I have a SVN project with following architecture (empty

| +--trunk (empty)
| +--branches
| | +--my_branch
| | +--my_branch2
| | +--temp_branch1
| | +--temp_branch2
| | +--temp_branch3
| +-tags (empty)

I would like to use TortoiseGit to clone this repository into a git repository with branches
and being able to commit changes back to SVN.

I have been able to clone a single branch by not checking any boxes related to Trunk, Tags, Branch and putting the URL to the branch (e.g.
) and specifying the first SVN revision of the branch.

TortoiseGit clone of SVN single branch

I have tried to put the URL
and checking all the boxes but this failed each time.

Question 1: How to clone the SVN repository with all its branches to Git through TortoiseGit?

Question 2: What is the way (if it exists) to only keep certain branches in the Git repository (namely, removing all the branches

I found a bit of if using git-svn CLI (like this related topic) but nothing relevant for TortoiseGit.

Thanks a lot

Answer Source

Question 1 A mix of TortoiseGit + patch of config file (c.f. below)

Question 2 Based on Lazy Barger hints, I came up with the following flow

  1. TortoiseGit clone with only a selection of the trunk (revision 12345 corresponding to the creation of the tunk)

TortoiseGit clone of SVN trunk

  1. .git/config file edited by hand to add the desired branches

The following shall be added in the svn-remote part

[svn-remote "svn"]
    url = https://myserver:8443/svn/WorkRoot
    fetch = my_project/trunk:refs/remotes/origin/trunk
    branches = my_project/branches/my_branch*:refs/remotes/branches/*
  1. TortoiseGit SVN fetch to pull out the branches

The last command might take a while because it starts searching from revision 1.

  1. Perform TortoiseGit Switch/Checkout to change the branch

Note: To perform the command equivalent to svn update, I use Git SVN Rebase and select the correct upstream corresponding to the remote branch (and not the trunk which is selected by default).

Git SVN Rebase

Hope it helps

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download