将文件从git repo拉到svn repo

时间:2019-03-07 22:16:39

标签: git svn

所以我的团队目前正在为我们的项目使用svn存储库。有另一个团队并行工作,但是他们正在使用git存储库。我想采用其他团队的代码并将其合并到我们的代码中。我已经尝试了几次,但是我一直在不合并的情况下提取它们的代码,即它只会覆盖我们的文件。我一直在使用git-svn工具,但收效甚微,我担心在我们的svn日志中,越来越多的无用和垃圾提交的情况在老板面前显得不好。

这些是我遇到的一些障碍:

  • 我们有一个单独的svn存储库,其中包含大约10个组件,另一个团队为每个组件都有一个仓库。
  • 我一直在跟踪一个使用-s选项的示例,该选项是我们svn存储库所不具备的标准布局(使用trunk / branches / tags的svn公共目录结构)的缩写。如果没有该选项,我将无法使该方法正常工作,这会导致所有文件合并(基本上只是复制)到一个我不在乎的空目录中。
  • 最好,我不想保留他们的整个提交历史记录。我只想要一个提交,说我将他们的仓库与我们的仓库合并了。还是我必须合并的每个git仓库的提交。上一个项目符号中提到的同一示例复制了整个提交历史记录,这为我们的日志添加了很多提交内容,而我的团队对此并不关心。

以下是示例(此post中的第一个答案):

mkdir copy-git-repo
cp -a orig-git-repo/. copy-git-repo/
cd copy-git-repo/
svn mkdir --parents https://svn/url/PROJECT/trunk -m "Trying to merge of of their git repos into our svn"
git svn init https://svn/url/PROJECT -s
git svn fetch
git rebase trunk master
# if there are merge conflicts
git status
# deal with merge conflicts listed 
git add .
git rebase --continue
git svn dcommit 

有人看到我犯了一个错误吗?

1 个答案:

答案 0 :(得分:0)

如果您习惯使用svn,我建议您直接使用svn(即使我讨厌它)。所以....如果您看一下另一支团队的仓库(正在使用git的仓库),可以将svn修订版(来自您的svn仓库)映射到git仓库的修订版...我是说, 1到1,不是 close 修订。它必须与修订的完全匹配。

假设您要将git分支X(从其仓库中)合并到您的主干分支(从您的仓库中)。如果您发现X的祖先与躯干的祖先相等,即为1:1,那么您可以:

  • 在您的svn存储库上创建一个分支,该分支从我们正在讨论的祖先开始
  • 从该分支上的项目中删除所有文件(不提交
  • 获取分支X的内容的副本(在git repo ..... X的最顶端),并将其放在分支内。然后立即提交svn。至此,您刚刚创建的修订版具有git和svn都可以看到的X祖先与分支X的尖端之间的所有差异。
  • 现在,您可以使用创建的这个分支,然后尝试将其合并到主干中。

作为最后的建议(抱歉,这是我的观点):请考虑永久使用git 。要适应svn的差异需要花费一些精力...但是您不会后悔。