问题
I am using SubGit to synchronize Git and SVN repos. When cloning a remote Git repo I want to preserve all the history of that repo. The steps I currently follow allow me to copy the history of the master branch only:
svnadmin create svn_repos
subgit-1.0.0-EAP_1381/bin/subgit configure svn_repos
subgit-1.0.0-EAP_1381/bin/subgit install svn_repos
git clone svn_repos gitRepo
cd gitRepo/
git remote add -f newRemote git://127.0.0.1/gitRepo
...
From git://127.0.0.1/gitRepo
* [new branch] FirstProductionTag -> newRemote/FirstProductionTag
* [new branch] SecondProductionTag -> newRemote/SecondProductionTag
* [new branch] ThirdProductionTag -> newRemote/ThirdProductionTag
* [new branch] bugfix -> newRemote/bugfix
* [new branch] bugfix2 -> newRemote/bugfix2
* [new branch] master -> newRemote/master
git merge -s ours --no-commit newRemote/master
git read-tree --prefix=foo/bar/ -u newRemote/master
git commit -m "Merged new Remote into subdirectory /foo/bar"
git push origin master
How can I merge the changes from bugfix and bugfix2 branches at the same time? Thanks!
回答1:
If your goal is to get Subversion repository from remote Git repository and keep both repositories synchronized, consider do the following:
$ svnadmin create svn_repos
$ git clone --mirror git://127.0.0.1/gitRepo svn_repos/.git
$ subgit-1.0.0-EAP_1381/bin/subgit install svn_repos
回答2:
I logged in to say that vadishev's answer works and is the simplest solution to import a git repo with full history to svn.
I would also like to add that should you require only the master branch to mapped (intentionally omitting the other branches in the git repo), you should first clone the git repo with the single branch flag like so:
git clone git_url --branch git_branch --single-branch target_folder
Thank you vadishev.
来源:https://stackoverflow.com/questions/11048396/converting-git-repository-into-svn-with-subgit