什么不应该包含在源代码控制之下?
什么不应该包含在源代码控制之下?
希望能有一个更或多或少完整的列表,列出哪些文件和/或目录(在大多数情况下)不应该在源代码控制下。你认为应该排除哪些内容?
至今的建议有:
一般情况下
- 包含敏感信息的配置文件(密码、私钥等)
- Thumbs.db、.DS_Store和desktop.ini
- 编辑器备份文件:*~(emacs)
- 生成的文件(例如DoxyGen输出)
C#
- bin\*
- obj\*
- *.exe
Visual Studio
- *.suo
- *.ncb
- *.user
- *.aps
- *.cachefile
- *.backup
- _UpgradeReport_Files
Java
- *.class
Eclipse
我不知道,这就是我现在正在寻找的内容 🙂
Python
- *.pyc
临时文件
- .*.sw?
- *~
什么不应该放在源代码控制下?原因和解决方法
在软件开发过程中,我们通常使用源代码控制系统来管理和跟踪代码的变更。然而,并不是所有的文件和文件夹都适合被放在源代码控制下。本文将讨论一些不应该放在源代码控制下的文件和文件夹,并提供解决方法。
在Visual Studio中,一些典型的文件和文件夹不应该被包含在源代码控制中,例如:
- `*.cachefile`:这是一种缓存文件,不应该被版本控制。
- `*.backup`:这是备份文件,通常也不应该包含在源代码控制中。
- `_UpgradeReport_Files`:这是一个用于升级报告的文件夹,也不应该被放在源代码控制下。
为了避免将这些文件和文件夹包含在源代码控制中,可以使用Tortoise版本控制工具的全局忽略模式。一个示例的全局忽略模式可以是:
bin obj *.suo *.user *.cachefile *.backup _UpgradeReport_Files
这样设置以后,Tortoise版本控制工具会自动忽略这些文件和文件夹,不会将其提交到版本控制系统中。
总结起来,不应该将一些生成的文件(如缓存文件和备份文件)以及特定的文件夹(如升级报告文件夹)放在源代码控制下。为了解决这个问题,我们可以使用Tortoise版本控制工具的全局忽略模式来自动忽略这些文件和文件夹。这样可以确保只有需要跟踪的代码文件被包含在源代码控制中,提高代码管理的效率。
在软件开发过程中,我们通常使用源代码管理工具来跟踪和管理我们的代码。然而,有些文件不适合放在源代码控制下。本文将探讨为什么这些文件不适合放在源代码控制下,并提供解决方法。
首先,让我们来看看为什么操作系统特定的文件不应该放在源代码控制下。这些文件是由操作系统的文件浏览器生成的,比如Windows的Thumbs.db
和Mac的.DS_Store
。这些文件包含有关文件夹和文件的元数据,例如缩略图和自定义文件夹视图选项。这些文件通常是隐藏的系统文件,不应该被包含在源代码控制中,因为它们与源代码的版本控制无关。
将这些操作系统特定的文件包含在源代码控制中可能会导致以下问题:
1. 增加仓库的体积:这些文件通常很小,但如果您的代码库中包含大量的文件夹和文件,则可能会导致仓库变得庞大。这将增加克隆和更新代码库的时间和带宽消耗。
2. 造成冲突和合并问题:当多个开发人员在不同的操作系统上工作时,这些操作系统特定的文件可能会导致合并冲突。由于这些文件是由文件浏览器生成的,并且可能包含有关文件夹和文件的不同元数据,因此在合并时可能会发生冲突。
为了解决这些问题,我们应该在源代码控制之前将这些操作系统特定的文件排除在外。可以通过在代码库的根目录下创建一个名为.gitignore
的文件来实现这一点。在.gitignore
文件中,我们可以列出要排除的文件和文件夹的模式。例如,我们可以添加以下内容来排除Windows的Thumbs.db
和Mac的.DS_Store
文件:
Thumbs.db .DS_Store
这样,源代码控制工具(如Git)将忽略这些文件,不会将它们包含在版本控制之中。
总结起来,操作系统特定的文件,如Thumbs.db
和.DS_Store
,不应该放在源代码控制中。这些文件与源代码的版本控制无关,可能增加代码库的体积并导致冲突和合并问题。为了解决这些问题,我们可以使用.gitignore
文件来排除这些文件。这样,我们可以更好地管理和维护我们的源代码库。
什么不应该放在源代码控制下?
在软件开发过程中,源代码控制(Source Control)是非常重要的工具。它可以帮助团队协作、追踪代码的版本变化、恢复历史版本等。然而,并不是所有的内容都适合放在源代码控制下。本文将讨论哪些内容不应该放在源代码控制下,以及解决方法。
首先,任何生成的内容都不应该放在源代码控制下。这包括二进制文件、字节码以及从XML生成的代码或文档。这些生成的内容可以通过代码或者脚本进行生成,没有必要将其纳入源代码控制。对于此类内容,应该通过其他方式进行管理,例如自动化构建工具。
此外,第三方库也不应该放在源代码控制下,除非你没有该库的源代码或者无法构建该库。对于这种情况,可以将第三方库的二进制文件放在源代码控制下,以便团队成员在构建项目时能够使用。
在一些情况下,例如对于大型项目,可能需要将一些文档或者其他生成的内容放在源代码控制下。例如,某个项目可能包含多个应用程序,共享许多文件。如果决定在其中一个应用程序上工作,可能需要重新编译所有文件,这可能需要很长时间,除非有人提供了对象文件包。在这种情况下,可以将所有生成的内容放在源代码控制下,以便团队成员可以直接使用。
然而,放置生成的内容在源代码控制下也存在一些问题。例如,如果同时在源代码和二进制文件上进行更改,就有可能导致二者不同步。如果某人更新了一些代码但忘记进行编译,那么在团队成员使用过时的二进制文件时可能会导致难以解决的错误。为了解决这个问题,可以考虑将编译的对象文件放在单独的存储库中。
总之,源代码控制的目的是管理和追踪源代码的版本。将生成的内容放在源代码控制下可能会加快构建过程,但在多用户环境中可能会导致混乱,并引发更多的故障排除问题。因此,不应该将生成的内容放在源代码控制下,而是通过其他方式进行管理。