1

假设我有以下(所需的)文件夹结构:

*CommonProject
*Project#1
----> CommonProject(link)
*Project#2
----> CommonProject(link)

其中 CommonProject 是属于该项目的源的位置,而 CommonProject(link) 只是到主要位置的软链接。如果我们将其想象为可视客户端中的树视图,如果我展开 Project#1,我将在那里看到 CommonProject 作为子目录,即使文件实际上并未存储在那里。

这样做的目的是启用以下行为:

当我签出 Project#1 时,我得到与该项目关联的文件以及包含其所有文件的子文件夹 CommonProject(好像Project#1 包含版本控制存储库中的文件副本)。现在,如果我要在 Project#1 中修改 CommonProject 的文件并将我的更改提交到存储库,这些更改将进入 CommonProject 位置(实际上没有文件存储在存储库中的 Project#1 下本地)。现在,如果我要同步 Project#2,因为它还包含指向 CommonProject 的符号链接,它现在将获得我的更新。本质上,文件的重复只存在于我的机器上,但在存储库中只有一个版本的 CommonProject。

我知道 Perforce 不能做到这一点,而不需要兼顾 3 个规格。这是非常复杂且容易出错的,尤其是当很多人都这样做时。是否有源代码控制存储库可以做到这一点?(指向一些关于如何完成的文档的指针是一个加号)

谢谢你。

4

2 回答 2

2

Subversion可以直接将符号链接存储在存储库中。这仅适用于支持符号链接的操作系统,因为 svn 只是以与任何其他文件相同的方式存储符号链接。

我认为您真正想要的是链接到单独的项目。Subversion 通过externals和 git 通过submodules支持这一点。另一种选择是在构建过程中管理此类事情,以便在初始化构建时收集一些静态资源。通常,更新经常更改的实用程序库会导致稳定性问题,因此您可以在需要时手动(或使用巧妙的脚本)执行此操作

于 2009-07-17T00:15:52.713 回答
0

最好将项目存储在一个平面目录中(每个项目 1 个目录,都在同一级别),并使用您构建的系统或 IDE 将所有东西链接在一起。

于 2009-07-17T00:53:00.617 回答