将不同项目中的文件共享到 HG/Git 中的同一个文件夹

Posted

技术标签:

【中文标题】将不同项目中的文件共享到 HG/Git 中的同一个文件夹【英文标题】:Sharing files in different projects to the same folder in HG/Git 【发布时间】:2013-10-23 06:18:39 【问题描述】:

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

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

Product X 安装文件夹\SDK\system*.h Product X 安装文件夹\SDK\Src*.cpp

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

这不会是 VSS 的问题,因为 VSS 支持 sharing of files

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

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

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

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

$/Support/专业版/SDK/system/.h $/Support/专业版/SDK/Src/.cpp

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

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

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

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

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

对此有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于将不同项目中的文件共享到 HG/Git 中的同一个文件夹的主要内容,如果未能解决你的问题,请参考以下文章

一个共享项目中的JS文件由不同的解决方案调用

项目文件夹中的共享库

将共享对象链接到其他共享对象 C++ 项目

Xamarin Forms:获取存储在共享项目中的图像文件的路径?

链接到 html 中的 samba 共享

将单元测试移动到 xcode 中的不同文件夹