When using source control, what files should actually be committed?
我正在开发一个托管在Google Code上的小项目,使用SVN进行源代码管理。 这是我第一次使用源代码控制,我对实际应该提交到存储库的内容感到有点困惑。 我的项目很简单:一个用C#编写的类库项目。 我写的实际代码是单个文件。
我的问题是:我应该提交整个项目(包括调试,发布,属性等目录)还是我的主.cs文件?
在与Subversion战斗了一段时间后(注意自己:不要重置存储库),看起来我终于让它正确处理了正确布局的目录。
您应该提交除输出文件之外的所有内容。
这意味着提交除
对于普通开发我不承诺:
- 箱子
- OBJ
- *。用户
- 名为.suo *
我承诺的其他一切。对于将发送给客户的版本,我还提交了我发送的确切二进制文件。
您应该包括构建项目所需的所有内容,而不是项目生成的任何内容,因为有人重新编译它将能够通过编译生成这些内容。
对于C#项目,您的解决方案文件(.sln),项目文件或文件(.csproj),源文件(.cs)和任何资源文件(.resx,* .bmp,* .png)等)。这包括Properties文件夹中的文件,因为它们包含项目的全局设置。
您不在Debug / Release中提交任何内容,这些是构建项目的输出。根据经验,您不提交二进制文件(* .dll,* .exe)。
如果您已经提交了足够的测试,请检查计算机上不同目录的源并尝试重建项目。
提交:
-
源文件和文件夹
-
资源(XML,CSS,ini文件......)
-
非生成的二进制文件(图像,
图标,声音..)
不承诺:
-
编译文件(exe,dll,jar)
-
生成的源文件
-
机器配置特定文件,
即包含说文件路径的文件
到您计算机上的某个本地文件
这可能完全不同
放在我的电脑上。
我承诺一切除了:
- bin目录
- obj目录
- .suo和.user文件
有关最后一位的详细信息,请参阅此问题。
你绝对不想提交构建的库,没有。源控制实际上只是源代码。现在,在.NET项目设置之类的东西中,您也可以将项目文件和解决方案文件视为源,这很好。 (但不是.user或.suo文件,请保留这些文件。)但是,共享已编译二进制文件的团队会遇到麻烦。二进制文件通常很好,例如引用的DLL。只是不是代码的预期构建二进制文件。
基本上,提交您需要的所有内容(并且只提供您需要的内容,至少在项目的代码层次结构范围内)来构建项目的完整版本。但是不要提交实际构建的输出。