在版本控制存储库中保存项目文件(即其他源代码文件的文件)是否常见?
此外,这些文件是否定期签入/签出?
我总是将SCC存储库设想为“干净”,仅包含源代码文件。
如何管理存储库中的非源代码文件?
以Visual Studio解决方案为例。您会将整个Solution的目录“签入”到SCCS,还是只添加源代码文件?在构建解决方案的时候,需要检查整个解决方案呢?也许最好用手动过程完成?
答案 0 :(得分:8)
我认为一般的经验法则是应该包含使项目编译和运行所需的最少量数据。这包括艺术(或其他基本数据文件)和任何构建脚本。对于autotools项目,这通常意味着configure.ac。在Visual Studio项目中,它表示Visual Studio项目文件。但是如果configure.ac已经存在,那么你就不会包含任何可以从其余部分自动生成的内容,例如“configure”脚本。
CVS和Subversion都有添加二进制文件的标志(Subversion自动添加它),这对于图像和项目文件(无论如何都是二进制文件)都很有用。 Subversion还允许文件锁定,这对于那些不想破坏彼此工作的艺术家来说是件好事。
答案 1 :(得分:3)
可以从存储库中的其他文件生成的任何内容本身不应存储在存储库中。
答案 2 :(得分:2)
您应该保留在存储库中构建项目所需的一切。
因此需要保留源代码,还需要保存帮助文件,文档,图形,许可证等。
不需要存储最终产品,因为它是从源重建的。
此外,不应存储带密码和登录的配置文件。
答案 3 :(得分:1)
是的,你应该!您应该包括其他开发人员在IDE中快速设置项目所需的所有文件,包括您自己如果碰巧搞乱本地项目配置而快速恢复项目。
我主要从事网络开发。有一些项目资源文件,例如Photoshop .PSD文件,用于开发,并以某种方式导出到其他生产的文件中。您可能希望将它们保存在单独的文件夹或存储库中。不主要关注这些文件的项目成员,无论如何很少更新和维护,可以选择忽略这些资源而不是本地副本。
答案 4 :(得分:0)
通常,任何作为构建的一部分重建的内容都不会检入存储库。否则,在提交生成的文件时会出现合并冲突,特别是如果它们是二进制文件或包含绝对路径。
正如Sydius所提到的,大多数SCM工具都有办法将非源文件标记为二进制文件。大多数现代工具自动检测非纯文本文件,对于CVS,它是:
cvs add -kb filenames
答案 5 :(得分:0)
我的一个宠物项目是适用于Windows,Mac OSX和Linux的小型跨平台应用程序。我使用wxWidgets作为框架,在Linux上使用Kdevelop,在Mac OSX上使用XCode,在Windows上使用Dev-Cpp作为IDE。使用CVS和SVN可以完美地管理每个IDE的项目文件。我将项目文件保存在repo中。每当我必须在任何目标平台上重建开发环境时,我所要做的就是安装IDE并查看最新的CVS。
答案 6 :(得分:0)
您需要将已编译二进制文件的历史记录保存为单独的存档。如果您在服务器上进行更新但它不起作用,则需要回滚。如果你从存档的二进制副本中做到这一点会好得多。我认为为二进制版本控制提供一些例程是个好主意。但它们不应该存储在SVN或类似的情况下。 SCC系统最有用,然后它们不用于备份目的,而是用于回滚和跟踪存储文档内的更改集。这对二进制文件没有意义。