我需要共享以在不同项目之间共享某些文件。因此我有一个像这样的文件结构:
D:\shared\
D:\shared\files-shared-by-all-projects-here
D:\project1\
D:\project1\project1-specific-files-here
D:\project1\shared <- directory junction to D:\shared
D:\project2\
D:\project2\project2-specific-files-here
D:\project2\shared <- directory junction to D:\shared
我在D:\project1
和D:\project2
设置了GIT回购。我的问题是GIT似乎只跟踪非联结(即真实目录)中的文件。
我将Visual Studio 2015用于这两个项目,当项目包含来自&#34;联合的文件时,它的团队资源管理器会表现得非常奇怪。目录:
使用Tortoise GIT显式添加驻留在共享目录中的文件(即通过D:\project2\shared\some-shared-file
引用它)来自Visual Studio 的文件不起作用:添加失败并显示一条消息:它既是文件又是目录。
上面是一个新的测试项目,其中frame
目录中的data
目录实际上是一个交汇点。
在我的实际项目中,情况略有不同......例如,如果我使用Tortoise GIT浏览仓库,它实际上会显示位于交叉点的共享文件被跟踪和签入以及部分仓库。但是,只要我在Visual Studio中打开项目,它就会显示解决方案资源管理器中的相同文件和团队资源管理器更改为&#34;等待删除&#34;。这是一个VS quirck吗?
所以最重要的是我只想知道如何使文件驻留在目录连接中作为项目的一部分与常规文件相同,以便正确检出并重新检入并形成部分项目(回购)历史?
答案 0 :(得分:3)
目前,这不受支持。这是由于Git for Windows和libgit2之间的联结处理之间的解释不同,libgit2是Visual Studio和(部分)TortoiseGit使用的Git库。
已决定两个实现应该 treat junction points as if they are Unix mount points,但目前实际上实现的实现都没有。
目前,Git for Windows将它们视为正常目录(因此它可能会删除您的联结并将其替换为新目录)。 libgit2将此视为符号链接,因此,Visual Studio根本不会处理它。
由于Microsoft需要更新Visual Studio以解决此问题,请在Microsoft Connect提交错误并鼓励人们投票支持它,希望它能在VS 2015中修复。