您是否将非代码文件(如DLL,图像和flv)放入版本控制中?

Do you put non-code files, such as DLL, images, and flv, into version control?

好吧,相对而言,它们并不经常改变,但积极的一面是你可以查看一个网站并期望它在本地机器上运行并且看起来正常。

你是做什么?


我将所有"原始材料"放入版本控制中,包括图像,外部jar /库以及用作输入或资源的其他数据文件。

我没有将任何生成的工件放入版本控制中。也就是说,构建生成的任何内容都被视为"忽略"或"私有" - 不受源代码控制。

一般来说,我觉得另一个开发人员应该能够检查项目并执行一键式(或单命令)构建来生成产品的工作实例。执行此操作后,开发人员的视图不应包含版本控制源的任何增量。

即构建应该能够在代码的"锁定"版本上完成,而不需要执行任何签出等,也不需要获取任何额外的外部依赖(一般来说)。


是。我们经常在源控制下放置外部依赖项和构建所需的任何其他内容。通过这种方式,我们可以确保干净的机器可以在源中登记并从sctratch构建,而无需在其上手动安装内容。


是的,主要是。

我从源代码管理中留下的唯一文件是网站"内容",主要涵盖网站用户上传的图像和文档。构成网站"外观"的图像(通常在母版页上,或通过CSS加载)不可编辑的图像进入源代码管理。

编译网站所需的DLL和其他项目(或网站功能所需的其他项目,如javascript)肯定包含在内。开发人员应该能够从源代码管理中检出网站,并拥有工作站点所需的一切。


还有将数据库转储放入版本/源代码控制的论点。

特别是如果数据库的模式在开发过程中不断发展。 (我知道,这完全是另一个话题)


是的,我们甚至将用于构建产品的工具放在源代码管理中。

一次同步,你就可以拥有构建产品所需的所有东西。如果不这样做,您将引入一些非确定性 - 开发人员不手动更新未检查的依赖关系将浪费时间跟踪其测试计算机上的错误配置问题。


一般是的。您应该能够从源代码控制中获取项目并在没有进一步干预的情况下在与构建环境的其余部分断开连接的干净机器上构建它。

对于很少更改的文件或一般的二进制文件,源控件提供程序可能会提供一些选项,例如"每个版本存储整个文件" - 此设置可防止源控制程序在您检查新视图时尝试计算差异(适用于ASCII文件,不适用于二进制文件)。

另一方面,如果有一个网络驱动器或类似的东西,它将始终可用于构建项目的所有机器,您可以放弃引用该远程资源(无论是真正的驱动器,还是图像的URL)只要您确保对该远程系统上的备份过程感到满意。

源代码控制提供了两个重要的功能:开发人员之间的源代码共享和源备份 - 很多人忘记了第二个,直到它为时已晚:)我自己包括一次。学到了我的教训!哈哈。


是的,我们这样做。

您应该能够从源代码控制中获取项目,并且无需跳过箍就可以构建所需的一切。

没有什么比浪费时间试图找到成功构建的依赖项更糟糕了。 :(