我的团队目前正在开发两个项目,每个项目都有一个单独的svn存储库,其标准布局如下:
Project1/
Trunk
Branches/
module1
module2(ext)
Tags
Project2/
Trunk/
Branches/
module1
module2(ext)
Tags
每个项目在某个时间点都来自共同的祖先。在我看来,使用git作为版本控制是很自然的,因为一些错误修复和模块应该应用于两个项目。今天,我们所能做的最好的事情是共享一些外部模块(如示例中所示的module2),并将它们作为单独的svn存储库进行管理。这很好,只要我们使我们的外部完全通用,但它不允许在所有其他 - 不同但不是那么不同 - 模块(如module1)中共享更改。
有没有办法将两个项目迁移到一个git存储库,每个项目的主干和分支都是这样的分支:
COMMON_PROJECT_REPO
Ancestor
|____________
| \
Project1 Project2
| |
| |
__/| |\__
| | | |
| | | |
br1 | | br2
您认为这是正确的布局吗?
如何将我的外部作为文件夹包含在我的git存储库中?
谢谢!
答案 0 :(得分:0)
如果项目是独立项目,我不应该在一个回购中将它们合并在一起。如果它们只是同一项目的不同变体,则可以将它们放在同一个仓库中。如果没有,最好使公共代码成为两个项目使用的库。
至于迁移,您不应该在所有情况下使用git-svn
,而应使用svn2git
,但应使用正确的svn2git
。见e。 G。我在Disconnected GIT branches after migrating from SVN的回答了解更多细节和推理。
使用右git-svn
,您还可以轻松地将两个SVN项目放在一个Git存储库中,其中常见提交在最终结果中是相同的提交。对于svn2git
或错误的{{1}},情况并非如此。