最好的通用 SVN 忽略模式?

Posted

技术标签:

【中文标题】最好的通用 SVN 忽略模式?【英文标题】:Best general SVN Ignore Pattern? 【发布时间】:2010-09-10 06:21:48 【问题描述】:

什么是最好的(或尽可能好的)通用 SVN 忽略模式?

有许多不同的 IDE、编辑器、编译器、插件、平台等特定文件和一些“重叠”的文件类型(即,某些类型的项目需要,而其他类型的项目不需要)。

但是,无论您的开发环境的具体情况如何,您都不希望将大量文件类型自动包含在源代码管理中。

这个问题的答案可以作为任何项目的一个很好的起点 - 只需要他们添加他们需要的少数环境特定项目。它也可以适用于其他版本控制系统 (VCS)。

【问题讨论】:

你好 Zach,我一直在阅读你的这篇文章:zachburlingame.com/2011/03/… 我有几个问题..有没有办法联系你?感谢您抽出宝贵时间...PS:除了通过这里的评论外,找不到任何其他方式与您联系,很抱歉给您带来烦恼 【参考方案1】:

我会在这个问题上加上我自己的两分钱:

我将以下 SVN 忽略模式与 TortoiseSVN 和 Subversion CLI 一起用于 Windows 和 Linux 平台上的本地 C++、C#/VB.NET 和 PERL 项目。这对我来说很有效!

为复制和粘贴格式化:

*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk *.msi* .res *.pch *.suo *.exp *.*~ *.~* ~*.* cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj *.csproj.user *.user *.generated.cs

为便于阅读而格式化:

*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk *.msi* .res *.pch *.suo *.exp *.*~ *.~* ~*.* cvs CVS .CVS .cvs 发布发布调试调试 忽略 忽略 bin Bin obj Obj *.csproj.user *.user *.generated.cs

【讨论】:

另外,如果你使用 WPF *.g.vb *.g.cs *.baml *.GenerateResource.Cache *.cache 是否需要 *.dll,因为在存储库中也可能需要提交参考程序集? @Xabatcha - 您始终可以明确包含任何扩展名(或文件夹)的文件,无论它是否在全局忽略模式中列出。通常,您不希望 SVN 跟踪 *.dll,但是您始终可以显式添加任何必要的(我经常在第三方程序集的情况下这样做)。 如果你正在使用 ReSharper,也可以添加 如果你使用 NuGet,你应该添加 packages 并允许 nuget 在构建过程中下载丢失的包【参考方案2】:

基于 Burly 的忽略模式,我已将 ReSharper 添加到忽略列表中

为复制和粘贴格式化:

*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk .msi .res *.pch *.suo *.exp ~. cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj *.csproj.user *.user _ReSharper.* *.resharper.user

为便于阅读而格式化:

*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak
*.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk .msi .res *.pch *.suo *.exp ~. cvs
CVS .CVS .cvs release Release debug
Debug ignore Ignore bin Bin obj Obj
*.csproj.user *.user _ReSharper.* *.resharper.user

【讨论】:

我也使用它:_ReSharper.* 请注意,Dve 的评论已合并到上述模式中。无需再次添加。【参考方案3】:

我对 Visual Studio 的忽略模式:

*/bin */obj */Release */Debug *.suo *.err *.log *.obj *.bin *.dll *.exe *.LOG *.user *.pdb [tT]emp [tT]empPE Ankh.Load thumbs.db *.resharper *.vspscc *.vsssccc *.scc */_ReSharper* */_ReSharper.* bin obj *.resharperoptions *.db *.bak *_ReSharper* *.snk 日志输出 TestResults *.crunchsolution .* *.crunchproject.*

为便于阅读而格式化

*/bin */obj */Release */Debug *.suo *.err *.log *.obj *.bin *.dll *.exe *.LOG *.user *.pdb [tT]emp [tT]empPE Ankh.Load thumbs.db *.resharper *.vspscc *.vsssccc *.scc */_ReSharper* */_ReSharper.* bin obj *.resharperoptions *.db *.bak *_ReSharper* *.snk 日志输出 TestResults *.crunchsolution.* *.crunchproject.*

【讨论】:

【参考方案4】:

每次我在存储库中遇到我通常不想要的文件时,我都会更新模式。我相信没有“最佳”模式 - 它总是取决于您开发的语言和环境

此外,您不太可能想到所有可能的“可忽略”文件类型 - 您总是会遇到您忘记包含的文件类型。这就是为什么随时更新模式效果最好的原因。

【讨论】:

我同意没有绝对意义上的“最佳”模式,这就是我添加(或尽可能好)的原因。你是对的,你不会枚举所有这些,它确实取决于我也说过的 lang & env。但是,有很多你可以立即淘汰。 此外,在使用时添加它们对于单个开发人员环境也可以正常工作,但当您在一个项目中有多个开发人员时,需要有一个共同的项目忽略模式。您希望尽可能不频繁地更新它,因此您希望提前淘汰尽可能多的人 当然,*.bin *.bak *.pdb *.suo 等通常的模式必须在前面设置,我同意。但是,一旦您在存储库文件夹上设置了忽略属性,它们就会有效地共享 - 尽管我知道这并不是您的意思。【参考方案5】:

Windows 用户可能想要添加 desktop.ini 和 thumbs.db。

【讨论】:

【参考方案6】:

用于我的 Visual Studio 项目

*/bin */obj *.user *.suo

您可以从那里扩展更多文件类型。

【讨论】:

我今天早些时候看到了一个类似的列表—— */bin 和只是 bin 有什么区别?假设您想忽略整个文件夹。 阅读第 5.13 节。忽略 TortoiseSVN 帮助文件的文件和目录。 tortoisesvn.net/docs/release/TortoiseSVN_en/… 那里说你不应该包含 / 或 \,并且包含它们是早期版本的遗留物 @Simon,这不是说(在“全局忽略列表中的无路径”插图中)svn:ignore 中的路径可以,但在全局忽略列表中不行吗?【参考方案7】:

Visual Studio (VC++) 用户肯定需要排除 .ncb 文件

【讨论】:

【参考方案8】:

Mac 用户可能想加入 .DS_Store。另外,如果有开发者使用 Emacs 或 Vim,你可能需要添加 ~~ 和 ##。

【讨论】:

【参考方案9】:

对于 Eclipse,我使用:

bin
.*

.* 获取所有项目配置。您几乎从不想签入“隐藏”目录或文件,但如果出现,您仍然可以 svn 添加它。

【讨论】:

obj 也是必须的,还有 *.user 文件【参考方案10】:

由于您可能将第三方库和 dll 用作项目的一部分,因此我认为从存储库中阻止 *.lib 和 *.dll 并不明智。这些是要存储在存储库中的东西。

【讨论】:

当使用第三方库、dll、exe等时,只需明确添加它们。如果你想做一个完整的第 3 方树,只需暂时禁用忽略模式。但是,您不希望在日常开发过程中隐含地使用这些类型,因此将它们包含在模式中。【参考方案11】:

Visual Studio 2010 用户应添加 ipch(包含 C++ 预编译头文件的文件夹)和 *.sdf(智能感知用于任何类型项目的巨大文件)。

【讨论】:

【参考方案12】:

模式取决于您使用的操作系统。

在 Linux 上,您首先需要阻止 **.o*、**.so*、**.a* 和 **.la*。您可能还想阻止 **~*(编辑备份文件)和 #*#(崩溃时的 emacs 备份)。

在 Windows 上,您至少需要 **.obj*、**.lib* 和 **.dll*。

您需要阻止的任何其他文件取决于您的 IDE、编辑器和编译器。

【讨论】:

【参考方案13】:

如果你使用 Resharper,必须添加 Resharper。

另一个需要注意的是 Ankh*.*

【讨论】:

是的,除了 Visual Studio 之外,我忽略了大多数工具特定的标志。希望其他人继续为他们的各种工具添加带有明确文件模式列表的答案!【参考方案14】:

不要忘记NCrunch 临时文件:

*.crunchsolution.* *.crunchproject.*

【讨论】:

【参考方案15】:

和核心转储(cygwin、linux)

*.stackdump core.*

【讨论】:

【参考方案16】:

gitignore.io 为 git 提供可配置的模式。它们提供了一个可读的列表,您需要为 SVN 重新格式化。

例如,requesting MicrosoftOffice and Windows 返回

# Created by https://www.gitignore.io/api/microsoftoffice,windows

### MicrosoftOffice ###
*.tmp

# Word temporary
~$*.doc*

# Excel temporary
~$*.xls*

# Excel Backup File
*.xlk

# PowerPoint temporary
~$*.ppt*

# Visio autosave temporary files
*.~vsdx


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

【讨论】:

【参考方案17】:

gitignore.io 为 git 提供可配置的模式。它们提供了一个可读的列表,您需要为 SVN 重新格式化。

例如,requesting MicrosoftOffice and Windows 返回

# Created by https://www.gitignore.io/api/microsoftoffice,windows

### MicrosoftOffice ###
*.tmp

# Word temporary
~$*.doc*

# Excel temporary
~$*.xls*

# Excel Backup File
*.xlk

# PowerPoint temporary
~$*.ppt*

# Visio autosave temporary files
*.~vsdx


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

好像可以直接作为svn:global-ignore使用

【讨论】:

以上是关于最好的通用 SVN 忽略模式?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse svn 忽略target .project .classpath等目录文件

开发工具IDEeclipse的SVN提交忽略target等多余文件

单例模式最好用枚举

你最好的 Swing 设计模式和技巧是啥? [关闭]

SVN 的使用 命令行模式

Ubuntu下最好用的SVN客户端 rabbitvcs