如何使用git svn克隆svn repo并能够同时提交git和svn?

时间:2015-01-22 10:06:43

标签: git svn porting dcommit

我有以下情况:

我正在移植一个大型仓库,我希望将一些目录分成具有独立/单独历史的git存储库,例如:

git svn clone  --trunk=https://svne1.XXX.XXX.com/XXXX/svnroot/trunk/ https://svne1.XXX.XXX.com/XXXX/svnroot/trunk/src/project1 --username myname --no-metadata -A ~/Documents/users.txt

这将创建一个git存储库,其中包含来自主干下src/project1的源代码,并且具有单独的历史记录,我将能够将其推送到任何我想要的位置。

但我需要(一段时间)能够推送到svn repo并考虑到我只从我的项目中下载了一个目录的历史而不是中继它不是那么容易允许:

git svn rebase
git svn dcommit

我怎么能这样做呢?已经从svn提取了多个repos到git并且同时提交了git和svn(考虑到那些较小的git repos中的历史是svn中历史的不同(子集))

修改

启动克隆操作后再运行git svn rebase我会得到:

git svn rebase
Unable to determine upstream SVN information from working tree history

1 个答案:

答案 0 :(得分:2)

如果计划保持同步,则不应使用--no-metadata

  

svn.noMetadata,svn-remote..noMetadata

       This gets rid of the git-svn-id: lines at the end of every commit.

       This option can only be used for one-shot imports as git svn will
       not be able to fetch again without metadata.

我不认为您还需要指定--trunk,除非您想使用分支机构,如果是这样的话 - 会期望主干网在主网址之下,而不是在主网址之上。