使用git在两个位置使用相同的文件

时间:2013-08-30 09:31:37

标签: git visual-studio-2012

我有一个包含相关JavaScript文件的库项目,任何使用该库的网站都必须包含。

在源代码管理中,js文件属于库(右侧)。但是,在运行/调试/更改应用程序时,真的方便将文件视为属于使用库的Web项目。

在TFS中,我们通过将库的脚本目录重新映射到Web项目的scripts目录来处理这个问题,这意味着在处理项目时,js文件实际上看起来像是Web项目的一部分,而它跟随库时分支/合流。

如何在git中执行类似的操作?

使用构建脚本复制文件不是一个可行的解决方案。它会在调试时进行实时更改,因为它只会更新副本,或者需要重新构建整个应用程序,只需进行一些小改动就可以强制复制文件。

使用“添加为链接”也不是一个选项,因为Web服务器不读取项目文件并且不知道链接,并且只在请求脚本时返回404。

该项目是在Visual Studio 2012中开发的,因此任何解决方案都必须与VS中的项目结构一起很好地工作。

3 个答案:

答案 0 :(得分:2)

如何让库项目的Git存储库成为应用程序的Git存储库的submodule(或者subtree,如果您愿意的话),然后使用相对路径来引用库的JavaScript文件来自申请?

答案 1 :(得分:1)

解决方法是使用ntfs硬链接。

mklink /h aliasdir\script.cs realdir\script.cs

然后将aliasdir添加到.gitignore以防止git两次添加文件。该文件现在只在一个地方(realdir),但可以从两个地方添加。

con是每次克隆存储库时都必须创建硬链接,这不是可以签入的配置。

我首先尝试使用符号链接(mklink wihtout /h),但Cassini(ASP.NET开发服务器)不遵循它们。

答案 2 :(得分:0)

根据您使用此项目的项目数量,您可以将文件添加到另一个项目,但在添加对话框中,选择将文件添加为链接:

Add as link

这会将文件保留在原始位置,但就好像它是解决方案的一部分(因此您可以对其执行Content | Copy-Always等),并且具有与源代码控制无关的优势。