【问题标题】:git svn clone, mergeinfo are lostgit svn clone,mergeinfo 丢失
【发布时间】:2017-07-31 01:20:09
【问题描述】:

我们有一个 SVN 设置,它经常发生分支合并。我目前正在迁移到 git。我正在使用 svn2git 进行迁移,但我认为这同样适用于 git svn。

似乎 svn git clone 不会保留来自 svn 的 mergeinfo,因为 svn 和 git merge 的工作方式不同?例如,在 dong git svn clone 之后迁移一个 svn 主干存储库(有或没有特性分支)。做git log --full-history 只会显示分支合并到的主干中的提交,但是这个合并引入主干的分支内的所有提交历史都不存在了,但是如果使用 TortoiseSVN 并启用它确实会在 svn repo 中显示'包括合并的回复'。似乎 svn 中的所有 mergeinfo 都没有保留/复制到 git master/trunk 存储库中?这是应该发生的事情吗?

我已经读到 SubGit 可以处理这个问题(我还没有尝试过)。但只是想确保 git svn clone 确实不会在 git 中保留来自 svn 存储库的 mergeinfo 属性/信息。

【问题讨论】:

  • 我已经看到 git svn 在 Git 中产生的合并。
  • 合并没问题,只是合并分支中没有保留历史记录,例如,如果一个特性分支从主干中的回归 100 分支出来,并且提交 101 - 103,并且主干合并回特性分支在reversion 104中,在svn中,我可以看到101-104的reversion历史,但是在git中,我只能看到reversion history 100和104,合并后功能分支中101-103的历史在trunk中丢失。
  • 如果您只克隆主干,这可能是真的。如果您还克隆功能分支,您将获得您期望的结果。至少我得到了你所期望的。
  • 感谢@Vampire,是的,我目前也在克隆主干和分支。所以你是说合并信息对你有用吗?
  • 是的。 :-)

标签: git svn git-svn


【解决方案1】:

正如@Vampire 和其他人从其他地方提出的建议以及 SO Q & As: git svn 可能不是导入/转换 svn 存储库的最佳工具,我很确定它适用于某些情况。但是在极端情况下(无论如何对我来说)都失败了。

在我们的例子中,这是因为非标准的 repo 结构,它有一个共享的根级主干和许多不同应用程序的分支。所以它的结构看起来像'trunk\app1,app2,app3 ...'和'branches\app1_feature1,app1_feature2,app2_feature,app3_feature1'。

最初我没有导入任何分支,这没有将合并的信息从分支带入主干。然后我尝试将我需要的主干和分支移动到与标准结构相同的 svn 存储库中的不同位置,但 git svn 似乎也不满意。之后我尝试了SubGit,因为它似乎很容易上手并且可以免费导入,但最初没有成功,因为它使用的是相同的移动主干/分支。然后我尝试使用 SubGit 导入整个“分支”,最后得到了一些合并的信息,但由于重命名/移动了主干,仍然缺少一些早期的修订信息。

最后我最终使用了 ruby​​ gem 'svn2git' 并带有以下评论:

svn2git https://svn-host/product --trunk trunk/application1 --branches branches 
   --no-minimize-url --notags --metadata --authors ../../authors.txt -v 

这至少会带回最新的合并信息,并且作为快速浏览,即使由于新的主干重命名/移动了旧分支,它似乎也有来自主干的所有修订。但是转换花费了非常长的时间,我不得不让它在一夜之间运行,它将其他应用程序中所有不必要的分支带到我的 git clone 中。

注意:对于我用于 svn2git 的注释,我后来意识到“--branches”参数可以省略,因为“分支”是默认值。

【讨论】:

  • 由于您使用的`svn2git`基于git-svn,它当然需要年龄,正如您从我的其他答案中肯定知道的那样。 :-) 过夜是一个很好的时间,对于我们的工作存储库来说,一个新的克隆需要一周的时间。如果您使用 KDE svn2git,转换可能会在 1 或 2 小时内完成,您可以轻松适应 any 布局。 ;-)
  • 1-2 小时,所以在你的情况下,这就像 100 倍的速度!对我来说,它看起来像 KDE svn2git 有点难上手,但另一方面,我刚刚开始只转换一个应用程序,我目前正在记录我是如何进行转换的,所以我打算看看在 KDE svn2git 很快。
  • 我说“如果会使用”。我不认为我们的会那么快,我还没有尝试过。是的,开始肯定更难,但绝对值得。
  • 啊哈,错过了,一定是我的一厢情愿,想象一下,如果我后来发现它甚至没有接近我声称你声称的速度,会有多失望:D
  • 无论如何,你将会或将会有一个惊人的加速,只是可能没有那么大。 :-)
猜你喜欢
  • 2012-04-28
  • 2012-08-13
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
相关资源
最近更新 更多