2

我们正在尝试从 Visual SourceSafe(VSS)/SourceOffsite(SOS) 迁移到 HG/Git,有一个主要问题是我们不知道如何正确处理它。

我们将 C++ 源文件作为“产品 X”的一部分分发给我们的用户,这些源文件当然是受版本控制的。假设源文件的组织方式如下:

{产品 X 安装文件夹}\SDK\system*.h
{产品 X 安装文件夹}\SDK\Src*.cpp

到目前为止,一切都很好。对于一些高级用户,我们提供了额外的文件来制作我们的“Product X 专业版”,这些文件也放在上面提到的相同位置。

这不会是 VSS 的问题,因为 VSS 支持文件共享

以下是我们在 VSS 中管理源文件的方式:

我们在 VSS 中有一个“基本/非专业”版本的项目

$/Support/ CoreVersion /SDK/system/ .h
$/Support/ CoreVersion /SDK/Src/
.cpp

我们有一个“pro”版本的项目,它只包含高级用户的文件

$/Support/ Pro /SDK/system/ .h
$/Support/ Pro /SDK/Src/
.cpp

最后,两个不同版本的文件可以共享到同一个项目:

$/ SourceBase /SDK/system/
$/ SourceBase /SDK/Src/

然后开发人员只需要在 $/SourceBase/ 上工作。

现在,我们无法弄清楚如何在 HG/Git 中做到这一点,因为不再有“文件共享”。

我们知道“子存储库”,但是它似乎只为子路径设计,这不是我们的情况,因为这些文件必须放在同一个文件夹下,我们不想更改文件结构,除非它是最后一招。

对此有任何想法吗?

4

1 回答 1

0

您可以尝试使用 2 个分支来执行此操作。一个是 pro,一个是 std,所有开发都转到 pro 分支,std 分支只接受合并。

最初,您可以将所有文件放在 pro 分支中,并进行初始提交。然后删除非std文件,提交并创建std分支。

现在大家切换到pro分支做开发,当需要std build时,只需从pro合并,在解决Changed-Removed冲突时选择Remove。

于 2013-10-23T06:51:04.790 回答