所以我在我的.gitignore文件中有这条路径:!packages/*/lib/*/*.dll
这将阻止git忽略任何具有特定版本的.NET的特定版本的dll。但是,像Elmah这样的东西没有不同的版本(当前版本的Elmah的路径类似于packages\elmah.corelibrary.1.2.2\lib\Elmah.dll
)。
我知道如果我添加!packages/*/lib/*.dll
,它会抓住这样的东西,但我不想为每个略有不同的路径添加新的路径。
我尝试添加!packages/*/lib/**/*.dll
,但这似乎不起作用。有什么想法吗?
答案 0 :(得分:1)
为什么不想忽略DLL,句点? Git不适合版本化二进制文件 ,因为它必须在每次更改时保留每个版本的完整副本,这会导致repos随着时间的推移变得更大,这使得它们更难克隆,并且可能也会减慢其他Git操作的速度。
此外,像GitHub这样的远程回购主机可能会限制您的回购协议的大小。 GitHub's current limit is 1 Gigabyte(强调我的):
为获得最佳性能,我们建议每个存储库的容量保持在1GB以下。如果大型文件(通常是二进制文件)不在存储库中 ,则此限制很容易保留。如果您的存储库超过1GB,您可能会收到来自支持的礼貌电子邮件,要求您减小存储库的大小,使其恢复到1GB以下。
<强> Elmah is available via a NuGet package 即可。 正在使用NuGet package restore not an option for you?如果启用它,您只需对xml配置文件进行版本控制即可指定要使用的Elmah版本,如果不这样做,您的项目将在构建期间下载已经拥有它。
另见Using github on my project that uses NuGet。
**
语法只有made available after Git version 1.8.2,所以如果您使用的是早期版本的Git,那可能就是它无效的原因。您可以通过运行git --version
来检查您的版本。
答案 1 :(得分:-1)
一个好的答案是查看全局gitignore文件(gitignore_global.txt
)。如果您正在使用Windows计算机(我假设您是这样),您可能需要签入我的文档。如果您安装了SourceTree,也请检查Atlassian的程序文件。您很可能会看到*.dll
在这些文件中。删除它,你应该很好。
现在,我知道最重要的是你不应该在你的git存储库中包含DLL。 Cupcake制作的每一点都是有效的。但是,实际上,尺寸问题实际上仅适用于频繁更改的 DLL。由于整个解决方案中的obj
和bin
文件夹中的DLL几乎在每个构建版本上都会发生变化,因此对于git来说,这将是一个噩梦。但是,您的包存储库相对更改的频率很低。即使在高端情况下,它们也没有那么大的威胁:如果你有20个软件包,每个软件包有100KB的DLL,每个软件包运行10次更新,那么你将总共带来20MB的1GB限制--2% 。相反,如果您决定不包含DLL,正如Cupcake和许多其他人所说的那样,那么这意味着您必须处理以下两种后果之一:
这些后果似乎都不可接受。此外,Nuget Package Restore不能立即配置,以便通过Visual Studio轻松更新包,即使VS的内置包管理器使这非常简单。让git找到不在bin
和obj
中的DLL并自然添加它们意味着你可以在Visual Studio中通过NuGet更新包,git将找到那些新包,删除旧包,并且你的解决方案建立在结帐。
这样做的副作用非常重要:它意味着您必须确保您的存储库(以及克隆到您计算机上的每个存储库)必须在其存储库级bin
和obj
中包含.gitignore
和.gitignore
{1}}。如果你不这样做,那些经常变化的DLL会进入你的仓库,他们很可能会占用大量的空间。另一方面,那些文件夹中有很多你应该忽略的东西 - 调试软件包等 - 你无论如何都希望这样做。事实上,您为.NET / Windows项目找到的许多预先配置的 <div class="worklongdiv" style="padding-top:111px";>
<img src="images/Vividworklong.jpg"/>
<div class="work-text-content-long">
<header>VIVID VAPOURS</header>
<p style="font-size:17px; font-family:GothamRoundedBold;">Branding • Product Dev • Web Dev</p>
</div>
</div>
<div class="worklongdiv" >
<img src="images/Vividworklong.jpg"/>
<div class="work-text-content-long">
<header>VIVID VAPOURS</header>
<p style="font-size:17px; font-family:GothamRoundedBold;">Branding • Product Dev • Web Dev</p>
</div>
</div>
文件已经包含对这些文件夹的忽略。
最后,虽然git存储库中不包含DLL的原则是好的,但你不能忘记它对于频繁更改的 DLL是最重要的,并且你的依赖项肯定应该是包含在您的项目中,以保持一致性,易于构建和提高效率。