对于哪些文件和/或目录不应该(在大多数情况下)处于源代码管理之下,最好有一个或多或少的完整列表。您认为应该排除什么?
到目前为止的建议:
一般
C#
Visual Studio
爪哇
的Eclipse
我不知道,这就是我现在正在寻找的: - )
的Python
临时文件 - 。*。sw? - *〜
答案 0 :(得分:42)
生成的任何内容。二进制,字节码,从XML生成的代码/文档。
从我的评论者中,排除:
但包括:
FWIW,在我为一个非常大的项目工作时,我们在ClearCase下有以下内容:
我们没有为我们的软件构建模块。每两周发布一个完整的二进制文件,并附上最新的更新。
答案 1 :(得分:18)
特定于操作系统的文件,由其文件浏览器生成
Thumbs.db
和.DS_Store
答案 2 :(得分:15)
其他一些Visual Studio典型文件/文件夹
*.cachefile
*.backup
_UpgradeReport_Files
例如,我的tortoise全局忽略模式看起来像这样
bin obj *.suo *.user *.cachefile *.backup _UpgradeReport_Files
答案 3 :(得分:11)
构建的文件
答案 4 :(得分:7)
就像Corey D生成said任何内容一样,特别是构建过程和开发环境生成的任何内容都是很好的候选者。例如:
以上的一些例外情况可能是:
第三方图书馆,如果您需要发货,或者您的构建依赖于第三方库,将其置于源代码管理之下是不合理的,特别是如果您没有源代码库。还要考虑一些源控制系统在存储二进制blob方面效率不高,你可能无法利用这些文件的系统差异工具。
Paul也对生成的文件做出了很好的评论,你应该查看他的answer:
基本上,如果你不能合理 期望开发人员具备准确性 他们需要的确切工具的版本, 有一个案例可以把 在版本控制中生成文件。
说到最后,你需要根据具体情况考虑你在源代码管理下的所有内容。定义一个简单的列表,列出什么和什么不放在它下面只会对某些人有效,而且可能只有这么长时间。当然,您添加到源代码控制的文件越多,更新工作副本所需的时间就越长。
答案 5 :(得分:6)
IDE,构建过程或二进制可执行过程可以生成的任何内容。
答案 6 :(得分:6)
例外:
4或5个不同的答案表示生成的文件不应该受源代码控制。那不太正确。
专业工具生成的文件可能属于源代码管理,特别是在需要这些工具的特定版本的情况下。
示例:
基本上,如果您无法合理地期望开发人员拥有他们需要的确切版本的确切版本,则可以将生成的文件置于版本控制中。
svn人在best practices talk中讨论了这个例外。
答案 7 :(得分:6)
我会以不同的方式解决问题;什么东西应该包含在源代码管理中?您应该只控制那些文件:
该列表包括:
有时构建输出可以是构建输入。例如,模糊重命名文件可以是输出和输入以保持相同的重命名方案。在这种情况下,使用签入文件作为构建输入,并将输出放在不同的文件中。构建之后,检查输入文件并将输出文件复制到其中并将其签入。
使用排除列表的问题在于,您永远不会知道所有正确的排除项,并且最终可能会控制源不受源控制的内容。
答案 8 :(得分:5)
来自编辑的临时文件。
.*.sw?
*~
等
答案 9 :(得分:4)
desktop.ini
是我见过的另一个Windows文件。
答案 10 :(得分:3)
实际配置文件如asp.net中的web.config,因为人们可以有不同的设置。通常我处理这个问题的方法是在SVN上安装web.config.template。人们得到它,进行他们想要的更改并将其重命名为web.config。
除此之外以及您所说的内容,请注意包含密码的敏感文件(例如)。
避免使用Windows(拇指)或Mac OS(.ds_store)生成的所有烦人文件
答案 11 :(得分:3)
配置包含密码或任何其他敏感信息的文件。
答案 12 :(得分:2)
*.bak
。
答案 13 :(得分:2)
我发现考虑它的最好方法如下:
假装你有一台全新的,商店买的电脑。您安装操作系统和更新;您安装所有开发工具,包括源控制客户端;您创建一个空目录作为本地源的根目录;你做一个“获取最新”或源控制系统调用它来获取你想要构建的发行版的干净副本;然后运行构建(从源代码控制中获取),然后构建所有内容。
这个思维过程告诉你为什么某些文件必须在源代码控制中:构建在一个干净的系统上运行所需的所有文件。这包括.designer.cs文件,T4模板的输出以及构建不会创建的任何其他工件。
答案 14 :(得分:2)
此外:
Visual Studio
答案 15 :(得分:1)
不进入源代码管理的东西分为3类
答案 16 :(得分:1)
临时文件,配置除全局开发和敏感信息之外的任何其他内容
答案 17 :(得分:0)
无论语言如何:
对于那些不了解它的人:svn:ignore
很棒!
答案 18 :(得分:0)
如果您的代码有运行时环境(例如依赖库,特定的编译器版本等),请不要将包放入源代码管理中。我的做法很残酷,但很有效。我提交了一个makefile,它的作用是下载(通过wget)这些东西,解压缩它,并构建我的运行时环境。
答案 19 :(得分:0)
我有一个特殊的.c文件没有进入源代码控制。
规则在构建过程中生成的源代码控制中没有任何内容。
唯一已知的例外是工具是否需要构建自身的旧版本(引导程序问题)。在这种情况下,您需要在源代码管理中使用已知的良好引导副本,以便可以从空白构建。
答案 20 :(得分:0)
在这里走出困境,但我相信如果您在Visual Studio中使用任务列表,它们将保存在.suo文件中。这可能不是将它们保留在源代码管理中的理由,但这是在某处保留备份的原因,以防万一......
答案 21 :(得分:0)
自从提出这个问题以来已经过了很多时间,我认为很多答案虽然相关,却没有关于每种语言或IDE级别的.gitignore
的详细信息。
Github推出了一个非常有用的,社区合作的.gitignore
文件列表,适用于各种项目和IDE,值得一看。
这是git repo的链接:https://github.com/github/gitignore
要回答这个问题,请参阅以下相关示例:
还有特定于操作系统的.gitignore
文件。以下内容:
因此,假设您正在运行 Windows 并使用 Eclipse ,则可以将Eclipse.gitignore
和Windows.gitignore
连接到{{1}在项目的顶级目录中的文件。非常漂亮的东西。
不要忘记将.gitignore添加到您的回购并提交!
有可能,您的IDE已经为您处理了这个问题。无论如何,Visual Studio都会这样做。
对于.gitignore
文件,如果您发现特定.gitignore
中缺少任何文件或模式,则可以使用建议的更改在该文件上打开PR。请查看commit和pull request跟踪器,了解相关信息。
答案 22 :(得分:0)
我一直使用www.gitignore.io生成一个合适的setConnectHandler('name1')
文件。
答案 23 :(得分:-1)
意见:如果需要,一切都可以在源代码控制中,除非它带来重大的存储库开销,例如频繁更改或大块blob。
第三方二进制文件,难以生成(在时间上)生成的文件以加快部署过程,一切正常。
源控制的主要目的是将一个相干系统状态与修订号相匹配。如果有可能的话,我会用代码构建工具和目标操作系统冻结整个宇宙。