Language agnostic 什么不应该受源代码控制?

Language agnostic 什么不应该受源代码控制?,language-agnostic,version-control,Language Agnostic,Version Control,最好有一个或多或少完整的列表,列出哪些文件和/或目录不应该(在大多数情况下)受源代码控制。你认为应该排除什么 迄今为止的建议: 一般来说 使用敏感信息(密码、私钥等)配置文件 Thumbs.db、.DS_存储和desktop.ini 编辑器备份:*~(emacs) 生成的文件(例如DoxyGen输出) C# 垃圾箱\* obj\* *.exe Visual Studio *索先生 *.国家编目局 *.用户 *.aps *.cachefile *.备份 _升级报告\u文件 Java

最好有一个或多或少完整的列表,列出哪些文件和/或目录不应该(在大多数情况下)受源代码控制。你认为应该排除什么

迄今为止的建议:

一般来说

  • 使用敏感信息(密码、私钥等)配置文件
  • Thumbs.db、.DS_存储和desktop.ini
  • 编辑器备份:*~(emacs)
  • 生成的文件(例如DoxyGen输出)
C#

  • 垃圾箱\*
  • obj\*
  • *.exe
Visual Studio

  • *索先生
  • *.国家编目局
  • *.用户
  • *.aps
  • *.cachefile
  • *.备份
  • _升级报告\u文件
Java

  • *.类
Eclipse

我不知道,这就是我现在正在寻找的:——)

Python

  • *pyc先生
临时文件 -软件?
-*~

包含密码或任何其他敏感信息的配置文件。

操作系统特定文件,由其文件浏览器生成,如
Thumbs.db
.DS\u Store

生成的任何文件都不应签入。二进制、字节码、由XML生成的代码/文档

从我的评论中,排除:

  • 构建生成的任何内容,包括代码文档(doxygen、javadoc、pydoc等)
但包括:

  • 没有源代码的第三方库不会生成
FWIW,在我为一个非常大的项目工作时,我们在ClearCase下有以下内容:

  • 所有原始代码
  • Qt源代码和内置调试/发布
  • (非常过时的)规格

我们没有为我们的软件构建模块。每两周分发一份完整的二进制文件,其中包含最新的更新。

临时文件,配置除全局开发和敏感信息以外的任何内容。

来自编辑器的临时文件

.*.sw?
*~

等等。

可以由IDE、构建过程或二进制可执行过程生成的任何内容。

无论何种语言:

  • 缓存文件
  • 一般来说,导入的文件也不应该(像用户在web应用程序上上传的图像)
  • 临时档案;甚至是由操作系统(如windows下的thumbs.db)或IDE生成的
  • 使用密码配置文件?取决于谁有权访问存储库

对于那些不知道的人来说:这太棒了

实际的配置文件,例如asp.net中的web.config,因为人们可以有不同的设置。通常我处理这个问题的方法是在SVN上有一个web.config.template。人们得到它,进行他们想要的更改,并将其重命名为web.config

除了这一点和您所说的,还要小心包含密码的敏感文件(例如)


避免Windows(thumb)或Mac OS(.ds_store)生成的所有恼人的文件。

其他一些Visual Studio典型的文件/文件夹是

*.cachefile 
*.backup 
_UpgradeReport_Files
例如,我的乌龟全局忽略模式如下所示

bin obj *.suo *.user *.cachefile *.backup _UpgradeReport_Files
与生成的任何东西一样,特别是由构建过程和开发环境生成的任何东西都是很好的候选对象。例如:

  • 二进制文件和安装程序
  • 字节码和档案
  • 从XML和代码生成的文档
  • 由模板和代码生成器生成的代码
  • IDE设置文件
  • 备份IDE或编辑器生成的文件
上述情况的一些例外情况可能是:

  • 图像和视频
  • 第三方图书馆
  • 特定于团队的IDE设置文件
以第三方库为例,如果您需要发布或者您的构建依赖于第三方库,那么将其置于源代码控制之下并不是不合理的,尤其是如果您没有源代码。还考虑到一些源代码控制系统在存储二进制块时效率不是很高,并且可能无法利用系统差异工具对这些文件进行利用。 还对生成的文件发表了很好的评论,您应该查看他的:

基本上,如果你不能合理地 期望开发人员拥有准确的 他们需要的确切工具的版本, 有一个理由可以将 在版本控制中生成的文件


最终,你将需要考虑在事例基础上在源代码控制中所做的事情。确定一份硬性清单,列出哪些内容和哪些内容不放在下面,只会对某些人有效,而且可能会持续很长时间。当然,添加到源代码管理中的文件越多,更新工作副本所需的时间就越长。

不属于源代码管理的内容分为三类

  • 与项目完全无关的事情(显然)
  • 可以在安装介质上找到并且永远不会更改的内容(例如:第三方API)
  • 通过您的构建过程,可以从源代码管理中的内容(或从类2中的内容)机械地生成的内容

  • *.bak
    由WinMerge生成。

    另外:

    Visual Studio

    • *.国家编目局

      • 我会以不同的方式处理这个问题;源代码管理中应该包括哪些内容?您应该仅对以下文件进行源代码管理:

        • (需要修订历史记录,或者是在生成之外创建的,但属于生成、安装或介质的一部分)以及
        • 无法由您控制的生成过程生成,并且
        • 对于生成产品的所有用户都是通用的(无用户配置)
        该列表包括以下内容:

        • 源文件
        • 生成、项目和解决方案文件
        • 其他生成工具配置文件(与用户无关)
        • 第三方库
        • 预构建的文件,如PDF和do