GIT SVN - 使用 SVN 进行开发并使用 GIT 进行发布重要里程碑

GIT SVN - Use SVN for Development and GIT for Release Important Milestone

我们有 10 多个成员的团队(Team A),他们经常更改代码并提交给 SVN。

另一个团队(团队 B)正在使用 GIT (Azure DevOps)。

我们需要在特定时间点(例如每月一次)将源代码(来自 SVN)更改推送到 GIT。

用例:如果发布由团队 A 在 1 月完成,并将源代码推送到 GIT。 在 FEB 中,我们应该将 JAN 和 FEB 版本之间的源代码差异推送到 GIT。

我们希望 A 团队继续开发 SVN,B 团队继续开发 GIT。

如何以无缝方式实现这一点?

做你想做的应该很简单:

  1. 在 Git 存储库中,签出(切换到)您希望提交的分支,并确保您的状态是干净的,没有未决的更改。
  2. 可选:签出 SVN 存储库的新副本,以便您要复制的内容中不存在构建工件。
  3. 将 SVN 存储库中的所有文件复制到 Git 存储库中。
  4. 可选:更新 .gitignore 文件以排除您不需要在 Git 存储库中跟踪的文件。
  5. 此时 Git 将仅显示自上次执行此过程以来的更改。暂存您要提交的文件,并使用合理的消息提交它们。

只要您想获取最新的 SVN 快照并在 Git 中提交(例如,按照您的建议每月一次),请重复这些步骤。

关于可选步骤:您可能需要执行第 2 步或第 4 步,但可能不需要同时执行这两个步骤。如果您打算在来自 SVN 存储库的 Git 存储库中构建任何内容,那么无论如何您都可能想要执行第 4 步。这里的目标是在步骤 3 中的 copy/paste 之后,您可以盲目地提交步骤 5 中的所有更改,而无需手动暂存子集。

旁注:关于你问题的这句话:

In FEB, we should push difference of source code between JAN and FEB release to GIT.

SVN(和大多数源代码控制工具)在幕后存储 changesdiffs,但是,Git 的工作方式不同. Git 在每次提交中存储整个存储库的 快照 ,并且在幕后进行比较以找出一种有效存储这些快照的方法。这实际上并不影响答案,但这是一个需要实现的重要概念。 Git 在比较提交时即时计算差异以显示它们之间的变化。

补充说明:有将 SVN 转换为 Git 的工具,它将维护历史记录(如果您对此感兴趣),而不是每月快照.