我们有一个非常大的古代平CVS回购,其示例格式如下。我已经导入每个subdir作为自己的git回购与完整的历史。使用子模块将'CVS时代'回购转换为git回购
.
├── liba
├── libb
├── libc
├── prog1
├── prog2
└── prog3
让说,3个方案以如下方式使用库:
.
├── prog1
│ ├── liba
│ └── libb
├── prog2
│ ├── libb
│ └── libc
└── prog3
├── liba
└── libc
由于CVS允许标记树的一部分 - 我们标记每个库和程序发布了版本标签。例如liba_4x23
,prog3_2x22
。
我们还与图书馆的每一个版本,它使用的版本标记的程序(即liba_3x19
libc_7x88
)
如果我们发布程序的新版本没有库标签 - 标签停留在程序的最早版本它被使用了。
现在由于道路git的进口作品 - 它实际上是在程序的最新版本结束了(不要担心,虽然)
Git的子模块似乎是这是一个非常好的解决方案 - 一个版本可以检出一个程序,并将所有正确版本的库作为子模块进行抽取。
现在因为当前所有的程序都在不同版本的库中 - 我需要在特定版本上改进子模块。
prog1
与libb_4x50
prog2
链接与libb_4x70
假设libb_4x70
链接是最新的版本则prog2
的例子是容易
git checkout prog2
cd prog2
git submodule add libb
.... done
那么如何libb
标记添加与版本(不麸皮ched)4x50
到prog1
?如果您有:-)
一个更好的想法是什么,我们可能还需要做的就是回去3版本的程序,并设置相应的子模块为每个版本
其他方面的建议表示赞赏。无论是向后兼容还是管理它如何工作的例子。
谢谢。 “子模块的想法是在父回购中记录具体的提交。” - 这正是我想要的结果。这比我想象的更简单。 – 2012-02-16 16:07:51