Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解决方案中带有符号链接/链接文件的Visual Studio GIT_Git_Visual Studio_Svn_Version Control_Filesystems - Fatal编程技术网

解决方案中带有符号链接/链接文件的Visual Studio GIT

解决方案中带有符号链接/链接文件的Visual Studio GIT,git,visual-studio,svn,version-control,filesystems,Git,Visual Studio,Svn,Version Control,Filesystems,我的文件结构如下: 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:\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
    的文件夹symlink/junction,这样
    D:\Solution\Project\SharedCodeDir
    实际上就是到
    D:\SharedCodeDir

  • 问题: 在
    Visual Studio 2013/2015
    中,使用Microsoft Git provider,我如何正确地将我的解决方案/项目添加到Git源代码管理中,以及如果必须设置配置gile中的哪些Git属性,以便正确地记录
    D:\SharedCodeDir
    中的“共享”文件(即被跟踪)

    我想要的行为:

    示例案例: 1) 假设作为解决方案1的一部分,首先从VS编辑
    codefile1.txt
    。然后它就被承诺了。 2) 然后在其他程序中编辑相同的
    codefile1.txt
    ,或者从VS编辑,但从解决方案2中编辑(在这种情况下,它也会在最后提交到解决方案2的回购)。 3) 现在,当我回到解决方案1时,VS/git应该提醒我自上次提交以来,
    codefile1.txt
    发生了更改,并询问我想做什么

    现在,如果
    codefile1.txt
    在步骤1)中未提交,也就是说它已签出但未签回,我应该能够在VS外部或从其他解决方案中编辑它,并且它应该像普通链接文件一样工作(如果文件是在VS中打开并在外部更改的,则VS会提醒我文件在打开后已更改)。然后,我应该将其作为使用该文件的解决方案的一部分提交,以便将其与解决方案的repo的所有最新更改一起提交

    最后,在任何情况下,任何绑定Git的解决方案/repo都不应该试图用他们提交的最新版本(在不同的情况下)替换
    D:\SharedCodeDir\codefile1.txt中的物理文件。它只应该提醒我文件不同以及我想做什么(将
    D:\SharedCodeDir\codefile1.txt
    替换为来自repo的文件,或者用其他方法替换)

    另外,我不希望Git将
    D:\SharedCodeDir\codefile1.txt
    本地复制到
    D:\SharedCodeDir\Solution\Project\codefile1.txt
    作为另一个物理文件。也就是说
    D:\SharedCodeDir\Solution\Project\codefile1.txt
    应该始终是某种链接(如上面的备选方案1-4所述)到
    D:\SharedCodeDir\codefile1.txt
    中的真实文件

    那么我如何实现这个设置呢


    如果Git真的无法实现,那么SVN或其他替代方案如何?

    在我的情况下,与您的情况非常相似,我做了以下工作:

  • 使用Visual Studio中的“添加为链接”在我的解决方案文件夹外添加了文件。这些文件链接将放置在我的解决方案内的某个文件夹中
  • 在我的情况下,这些文件将与其他项目共享,因此每个项目将执行下一步:

  • 要将这些文件从D:\SharedCode\*.cs物理复制到D:\MyProject\Shared*.cs,我编辑了.csproj文件,并在
    标签
  • 
    
    所以,在这种情况下,所有文件夹都将在共享文件的最新副本上工作,但git仍将它们视为特定项目的一部分


    注意:如果需要链接内容文件(参考资料,.txt..),而不是编译文件(.cs),替换编译。内容。在上面的代码中

    共享、固定的文件通常是个坏主意。这可能也会让Visual Studio感到困惑。如果你真的想这样做,请将共享的内容放在他们自己的存储库中,并使用“添加为链接”VisualStudio中的功能。或者使用子模块/子树(VisualStudioToolsforGit不支持这些功能)。将共享文件放在自己的repo中会有什么帮助?首先,我必须手动将它们签出和签入(而不是从我正在使用的解决方案中的VS执行此操作),其次,它们可能仍会添加到解决方案的存储库中,具体取决于设置。因为这显然意味着该文件是共享的。它还允许对其进行独立版本控制。在不同存储库中的不同版本中使用同一个文件是一种等待发生的意外。