8

我正在使用SubGit来同步 Git 和 SVN 存储库。克隆远程 Git 存储库时,我想保留该存储库的所有历史记录。我目前遵循的步骤仅允许我复制主分支的历史记录:

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

如何同时合并来自 bugfix 和 bugfix2 分支的更改?谢谢!

4

2 回答 2

6

如果您的目标是从远程 Git 存储库获取 Subversion 存储库并保持两个存储库同步,请考虑执行以下操作:

$ 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
于 2012-06-18T14:24:25.180 回答
0

我登录说 vadishev 的答案有效,并且是将具有完整历史记录的 git repo 导入到 svn 的最简单解决方案。

我还想补充一点,如果您只需要映射主分支(故意省略 git repo 中的其他分支),您应该首先使用单个分支标志克隆 git repo,如下所示:

git clone git_url --branch git_branch --single-branch target_folder

谢谢你瓦迪舍夫。

于 2014-07-18T02:58:15.733 回答