1

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

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

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

我如何在 git 中做类似的事情?

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

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

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

4

3 回答 3

2

让库项目的 Git 存储库成为应用程序 Git 存储库的子模块(或子树,如果您愿意的话),然后使用相对路径从应用程序引用库的 JavaScript 文件怎么样?

于 2013-08-30T13:55:42.753 回答
1

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

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

然后添加aliasdir.gitignore防止git两次添加文件。该文件现在将仅位于一个位置 ( realdir),但可以从两个位置添加。

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

我也首先尝试了符号链接(mklinkwihtout /h),但 Cassini(ASP.NET 开发服务器)没有遵循它们。

于 2013-08-30T13:33:57.790 回答
0

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

添加为链接

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

于 2013-08-30T09:45:33.423 回答