我有一个包含相关JavaScript文件的库项目,任何使用该库的网站都必须包含。
在源代码管理中,js文件属于库(右侧)。但是,在运行/调试/更改应用程序时,真的方便将文件视为属于使用库的Web项目。
在TFS中,我们通过将库的脚本目录重新映射到Web项目的scripts目录来处理这个问题,这意味着在处理项目时,js文件实际上看起来像是Web项目的一部分,而它跟随库时分支/合流。
如何在git中执行类似的操作?
使用构建脚本复制文件不是一个可行的解决方案。它会在调试时进行实时更改,因为它只会更新副本,或者需要重新构建整个应用程序,只需进行一些小改动就可以强制复制文件。
使用“添加为链接”也不是一个选项,因为Web服务器不读取项目文件并且不知道链接,并且只在请求脚本时返回404。
该项目是在Visual Studio 2012中开发的,因此任何解决方案都必须与VS中的项目结构一起很好地工作。
答案 0 :(得分:2)
答案 1 :(得分:1)
解决方法是使用ntfs硬链接。
mklink /h aliasdir\script.cs realdir\script.cs
然后将aliasdir
添加到.gitignore
以防止git两次添加文件。该文件现在只在一个地方(realdir
),但可以从两个地方添加。
con是每次克隆存储库时都必须创建硬链接,这不是可以签入的配置。
我首先尝试使用符号链接(mklink
wihtout /h
),但Cassini(ASP.NET开发服务器)不遵循它们。
答案 2 :(得分:0)
根据您使用此项目的项目数量,您可以将文件添加到另一个项目,但在添加对话框中,选择将文件添加为链接:
这会将文件保留在原始位置,但就好像它是解决方案的一部分(因此您可以对其执行Content | Copy-Always等),并且具有与源代码控制无关的优势。