I have a SVN project with following architecture (empty trunk
and tags
)
https://svn-repo.com/svn/company
+--my_project
| +--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 my_branch
and my_branch2
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 (eg https://svn-repo.com/svn/company/my_project/branches/my_branch
) and specifying the first SVN revision of the branch.
I have tried to put the URL https://svn-repo.com/svn/company/my_project
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 temp_branchN
)?
I found a bit of if using git-svn CLI (like this related topic ) but nothing relevant for TortoiseGit.
Thanks a lot
[svn-remote]
section in $GIT_DIR/config
file by hand Git-SVN doc mention some rare cases for Subversion repos and suggest possible solution: enumerating all needed (and only needed) branches
Since some SVN repositories are oddly configured with multiple projects glob expansions such those listed below are allowed:
[svn-remote "project-a"] ... branches = branches/*/project-a:refs/remotes/project-a/branches/* branches = branches/release_*:refs/remotes/project-a/branches/release_* branches = branches/re*se:refs/remotes/project-a/branches/* ...
Question 1 A mix of TortoiseGit + patch of config file (cf below)
Question 2 Based on Lazy Barger hints, I came up with the following flow
.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/*
SVN fetch
to pull out the branches The last command might take a while because it starts searching from revision 1.
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).
Hope it helps
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.