Version control 在源代码管理存储库中模拟类似符号链接的行为

Version control 在源代码管理存储库中模拟类似符号链接的行为,version-control,repository,commit,symlink,Version Control,Repository,Commit,Symlink,假设我有以下(所需)文件夹结构: *CommonProject *Project#1 ----> CommonProject(link) *Project#2 ----> CommonProject(link) 其中CommonProject是属于该项目的源的位置,CommonProject(链接)只是到主位置的软链接。如果我们把它想象成可视化客户机中的树视图,如果我展开Project#1,我会将CommonProject视为一个子目录,即使文件实际上没有存储在那里 其目的是实现以

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

*CommonProject
*Project#1
----> CommonProject(link)
*Project#2
----> CommonProject(link)
其中CommonProject是属于该项目的源的位置,CommonProject(链接)只是到主位置的软链接。如果我们把它想象成可视化客户机中的树视图,如果我展开Project#1,我会将CommonProject视为一个子目录,即使文件实际上没有存储在那里

其目的是实现以下行为:

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

我知道Perforce无法做到这一点,如果不改变3个规格的话。这是非常复杂和容易出错的,特别是当很多人这样做的时候。是否有一个源代码管理存储库可以做到这一点?(一个指向如何完成的文档的指针是一个加号)

谢谢。

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


我认为你真正想要的是链接到不同的项目。Subversion通过和git通过支持此功能。另一种选择是在构建过程中使用管理这类事情,以便在初始化构建时收集一些静态资源。通常,更新经常更改的实用程序库会导致稳定性问题,因此当需要时,您可以手动(或使用巧妙的脚本)执行此操作。您最好只将项目存储在一个平面目录中(每个项目一个目录,都处于同一级别),使用您构建的系统或IDE将所有内容链接在一起

我可能读错了,但听起来它实际上把一个符号链接文件放入了存储库,所以当我签出Project#1时,我会得到一个指向CommonProject文件夹的链接,而不是Project#1文件夹下的完整副本(Windows兼容性也很重要)非常好,subversion中的外部看起来就像我想要的(至少在文档中),我将设置测试环境来测试这一点。但是Git子模块没有那么好。它们将原始副本和集成副本作为两个单独的副本保存,并且需要手动(或脚本化)管理来保持同步(这里的漏洞是,我不需要做额外的工作,每个使用CommonProject的项目都会自动同步)。感谢您的回答。Subversion支持符号链接,但不支持Windows下的符号链接(Windows从Vista开始就完全支持符号链接和硬链接)。上有此功能的请求,但页面是静态的。如果您对此感兴趣,应尝试通过添加有关此主题的评论来说服开发团队