我们正试图从Visual SourceSafe(VSS)/ SourceOffsite(SOS)转移到HG / Git,有一个主要问题,我们不知道如何正确处理它。
我们将C ++源文件作为“产品X”的一部分分发给我们的用户,这些源文件当然是版本控制的。 假设源文件的组织方式如下:
{产品X安装文件夹} \ SDK \ system * .h
{Product X install folder} \ SDK \ Src * .cpp
到目前为止一切顺利。 对于一些高级用户,我们提供了其他文件来制作我们的“Product X Professional版本”,这些文件也放在上面提到的相同位置。
这对VSS来说不是问题,因为VSS支持sharing of files
以下是我们在VSS中管理源文件的方式:
我们在VSS中有一个“基本/非专业”版本的项目
$ /支持/的 CoreVersion / SDK /系统/ .H
$ /支持/的 CoreVersion / SDK / Src的/ 的.cpp
我们有一个“专业版”项目,它只包含高级用户的文件
$ /支持/ 临 / SDK /系统/ .H
$ /支持/ 临 / SDK / src目录/ 的的.cpp
最后,两个不同版本的文件可以共享到同一个项目中:
$ /的 SourceBase / SDK /系统/
$ /的 SourceBase / SDK / Src的/
然后开发人员只需要处理$ / SourceBase /.
现在,我们无法弄清楚如何在HG / Git中完成此操作,因为不再有“文件共享”。
我们知道“子存储库”,但它似乎只针对子路径设计,这不是我们的情况,因为这些文件必须放在同一个文件夹下,我们不想更改文件结构除非这是最后的手段。
对此有什么想法吗?
答案 0 :(得分:0)
您可以尝试使用2个分支来执行此操作。一个是pro,一个是std,所有开发都转到pro分支,std分支只接受合并。
最初,您可以将所有文件放在专业分支中,并进行初始提交。然后删除非std文件,提交并创建std分支。
现在每个人都切换到专业分支并进行开发,当需要std build时,只需从pro合并,并在解决Changed-Removed冲突时选择Remove。