我有一个文件结构如下:
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
和其他“共享”文件。我有几个选项来实现这一点:
1.我可以在D:\Solution\Project\
中创建一个指向D:\SharedCodeDir\codefile1.txt
的符号链接,这样D:\Solution\Project\codefile1.txt
就真的是指向D:\SharedCodeDir\codefile1.txt
上的真实文件的符号链接
1.我可以简单地将D:\SharedCodeDir\codefile1.txt
作为AddFile对话框中的链接添加到VS项目中。
1.我可以创建一个硬链接,这样D:\SharedCodeDir\codefile1.txt
和D:\Solution\Project\codefile1.txt
将指向磁盘上的相同数据。这是最不希望的。
1.我可以在D:\Solution\Project
到D:\SharedCodeDir
中创建一个文件夹symlink / junction,这样D:\Solution\Project\SharedCodeDir
实际上是D:\SharedCodeDir
中实际文件夹的symlink / junction
问题:在Visual Studio 2013 / 2015
中,使用Microsoft Git提供程序,我如何正确地将我的解决方案/项目添加到Git源代码控制中,以及我必须设置配置gile中的哪些git属性(如果有的话),以便正确地解释我在D:\SharedCodeDir
中的“共享”文件(即被跟踪)?
我想要的行为:
示例案例:1)假设codefile1.txt
首先从VS编辑,作为解决方案1的一部分。那么它是承诺。2)然后,相同的codefile1.txt
在其他程序中或从VS但从解决方案2中编辑(在这种情况下,它也在最后提交到解决方案2的repo)。3)现在,当我回到解决方案1时,VS / git应该提醒我自上次提交以来codefile1.txt
发生了更改,并询问我想做什么。
现在,如果codefile1.txt
没有在步骤1)中提交,也就是说,它被 checkout 但没有被签回,我应该能够在VS之外或从另一个解决方案中编辑它,它应该表现得像一个正常的链接文件(VS提醒我,如果文件在VS中打开并在外部被更改,则文件自打开以来已经更改)。然后,我应该将它作为使用该文件的解决方案的一部分提交,这样它将与所有最新更改一起提交到解决方案的存储库。
最后,在任何情况下,任何Git绑定的解决方案/ repo都不应该尝试用他们提交的最新版本替换D:\SharedCodeDir\codefile1.txt
上的物理文件(如果它们不同)。它应该只提醒我文件不同以及我想做什么(用repo中的文件替换D:\SharedCodeDir\codefile1.txt
,或者反过来)。
另外,我不希望D:\SharedCodeDir\codefile1.txt
被Git本地复制到D:\SharedCodeDir\Solution\Project\codefile1.txt
作为另一个物理文件。也就是说,D:\SharedCodeDir\Solution\Project\codefile1.txt
应该始终是到D:\SharedCodeDir\codefile1.txt
中的真实的文件的某种链接(如上面的备选方案1 - 4所述)。
那么,如何才能实现这种设置呢?
如果Git真的不可能,SVN或替代品怎么样?
1条答案
按热度按时间pobjuy321#
在我的情况下,与你的情况非常相似,我做了以下事情:
1.使用Visual Studio中的“添加为链接”在解决方案文件夹外添加了文件。这些文件链接将放置在解决方案中的某个文件夹中。
在我的例子中,这些文件将与其他项目共享,因此每个项目将执行下一步:
1.要将这些文件从D:\SharedCode*.cs物理复制到D:\MyProject\Shared*.cs,我编辑了.csproj文件,并在
</Project>
标记之前添加了以下内容所以在这种情况下,所有文件夹都将在共享文件的最新副本上工作,但git仍然会将它们视为特定项目的一部分。
注意:如果您需要链接内容文件(资源,. txt..)而不是编译文件(.cs),请将上面代码中的Compile.替换为Content.