【发布时间】:2015-07-11 05:11:33
【问题描述】:
我的文件结构如下:
D:\SharedCodeDir\codefile1.txt
D:\SharedCodeDir\codefile2.txt
D:\SharedCodeDir\...
D:\Solution\Project\projectfile1.txt
D:\Solution\Project\projectfile2.txt
D:\Solution\Project\...
我需要在我的 VS 项目中包含 D:\SharedCodeDir\codefile1.txt 和其他“共享”文件。我有几个选择来完成这个:
我可以在
D:\Solution\Project\中创建指向D:\SharedCodeDir\codefile1.txt的符号链接,这样D:\Solution\Project\codefile1.txt将真正成为指向D:\SharedCodeDir\codefile1.txt中真实文件的符号链接我可以简单地将
D:\SharedCodeDir\codefile1.txt作为“添加文件”对话框中的链接添加到我的 VS 项目中。我可以创建一个硬链接,这样
D:\SharedCodeDir\codefile1.txt和D:\Solution\Project\codefile1.txt将指向磁盘上的相同数据。这是最不希望的。我可以在
D:\Solution\Project到D:\SharedCodeDir中创建一个文件夹符号链接/连接,这样D:\Solution\Project\SharedCodeDir确实是D:\SharedCodeDir中真实文件夹的符号链接/连接
问题:
在Visual Studio 2013 / 2015 中,使用Microsoft Git 提供程序,我如何正确地将我的解决方案/项目添加到Git 源代码管理中,以及我必须设置的配置文件中的哪些git 属性,以便D:\SharedCodeDir 中的“共享”文件是否被正确计算(即被跟踪)?
我想要的行为:
示例案例:
1) 假设 codefile1.txt 作为解决方案 1 的一部分首先从 VS 编辑。然后它被提交。
2) 然后在其他程序中或从 VS 但从解决方案 2 中编辑相同的 codefile1.txt(在这种情况下,它最后也提交给解决方案 2 的存储库)。
3) 现在,当我回到解决方案 1 时,VS / git 应该提醒我 codefile1.txt 自上次提交以来发生了变化,并询问我想要做什么。
现在,如果codefile1.txt 未在步骤 1) 中提交,即它已签出但未重新签入,我应该能够在 VS 外部或从其他解决方案对其进行编辑,并且它应该表现为正常链接文件(如果文件在 VS 中打开并且已在外部更改,VS 会提醒我文件自打开后已更改)。然后,我应该将其作为使用该文件的解决方案的一部分提交,以便提交解决方案存储库的所有最新更改。
最后,在任何情况下,任何受 Git 绑定的解决方案/存储库都不应尝试将 D:\SharedCodeDir\codefile1.txt 处的物理文件替换为他们已提交的最新版本(如果它们不同)。它只会提醒我文件不同以及我想要做什么(将 D:\SharedCodeDir\codefile1.txt 替换为来自 repo 的文件,或者相反)。
另外,我不希望 D:\SharedCodeDir\codefile1.txt 被 Git 本地复制到 D:\SharedCodeDir\Solution\Project\codefile1.txt 作为另一个物理文件。也就是说,D:\SharedCodeDir\Solution\Project\codefile1.txt 应该始终是某种链接(如上面的备选方案 1-4 中所述)到D:\SharedCodeDir\codefile1.txt 中的真实文件。
那么我该如何实现这个设置呢?
如果 Git 确实无法实现,那么 SVN 或替代方案怎么样?
【问题讨论】:
-
共享、固定、文件通常是个坏主意。它也可能会混淆 Visual Studio。如果你真的想要这个,请将共享的东西放在他们自己的存储库中,并使用 Visual Studio 中的“添加为链接”功能。
-
或玩转子模块/子树(Visual Studio Tools for Git 不支持)。
-
将共享文件放在他们自己的仓库中会有什么帮助?首先,我必须手动将它们签出和签入(而不是从我正在使用的解决方案中的 VS 执行),其次,根据设置,它们可能仍会添加到解决方案的存储库中。
-
因为它会清楚地表明文件是共享的。它还允许对其进行独立版本控制。在不同存储库的不同版本中拥有相同的文件是等待发生的意外。
标签: git visual-studio svn version-control filesystems