【问题标题】:Pulling files from git repo into svn repo将文件从 git repo 拉入 svn repo
【发布时间】:2019-07-29 22:09:46
【问题描述】:

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

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

  • 我们有一个单一的 svn 存储库,其中包含大约 10 个组件,其中另一个团队对每个组件都有一个存储库。
  • 我一直在关注一个使用 -s 选项的示例,它是我们的 svn 存储库没有的标准布局(使用树干/分支/标签的 svn 通用目录结构)的缩写。如果没有这个选项,我无法让这个方法工作,这会导致所有文件被合并(基本上只是复制)到一个我不关心的空目录中。
  • 最好我不想保留他们的整个提交历史。我只想要一个提交说我将他们的回购与我们的合并。或者我必须合并的每个 git repos 的提交。上一个项目符号中提到的相同示例复制了整个提交历史记录,这在我们的日志中添加了大量我的团队并不关心的提交。

这是示例(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 

有人看到我犯的错误吗?

【问题讨论】:

    标签: git svn


    【解决方案1】:

    如果您习惯使用 svn,我建议您直接使用 svn(尽管我讨厌它)。所以....如果您查看其他团队的 repo(正在使用 git 的那个),您能否将 svn 修订版(来自您的 svn repo)映射到 git repo 上的修订版...我的意思是, 1 比 1,而不是 close 修订。它需要是 exact 的修订匹配。

    假设您想将 git branch X(来自他们的仓库)合并到您的主干分支(来自您的仓库)。如果您可以找到与您的树干的祖先 1 比 1 等价的 X 祖先,那么您可以:

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

    作为最后一条建议(这是我的固执己见,抱歉):考虑永远使用 git。习惯与svn的不同需要一点点努力……但你不会后悔的。

    【讨论】:

    • 我的团队很快就会切换到 git。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2016-08-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多