本节书摘来自异步社区出版社《C++编程规范:101条规则、准则与最佳实践》一书中的第1章,第1.4节,作者:【加】Herb Sutter , 【罗】Andrei,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.4使用版本控制系统
摘要
常言道,好记性不如烂笔头:请使用版本控制系统(Version Control System,VCS)。永远不要让文件长时间地登出。在新的单元测试通过之后,应该频繁登入。确保登入的代码不会影响构建成功。
讨论
几乎所有大一点的项目都需要不只一个开发人员和一周以上的开发时间。在这样的项目中,需要比较同一文件的各个历史版本,以确定修改是何时(以及/或者由谁)进行的;需要控制和管理源代码的变更。
如果有多个开发人员,他们将会并行地进行修改,可能会在同一时间修改同一文件的不同部分。此时,就需要能对文件进行自动登出/版本管理的工具了,有些情况下还需要并发编辑的合并功能。版本控制系统能够自动化和控制登出、版本管理及合并操作。版本控制系统能够比人工实施更快更正确。而且我们也不需要在管理琐事上浪费时间——编写软件才是我们的工作。
即使是单独工作的开发人员,也有脑子短路的瞬间,需要搞清楚何时为什么引入了某个错误或者进行了某个修改。我们都难免如此。版本控制系统能够自动地跟踪每个文件的历史,使我们能够“让时光倒流”。问题并不在于你是否需要从历史中寻找答案,而在于你何时需要。[9]
不要破坏构建。版本控制系统中的代码必须总能构建成功。
由于目前能够找到大量的版本控制系统,我们没有任何借口将其拒之门外。最廉价也最流行的版本控制系统是cvs(见本条参考文献)。这个工具非常灵活,提供了TCP/IP访问功能,可以选择增强安全性(提供使用ssh协议作为后端),可以通过脚本编程实现极佳的管理功能,甚至还有图形界面。许多其他的版本控制系统产品要么将cvs作为模仿的标准,要么是以其为基础再构建新的功能。
例外情况
只有一个程序员且从头至尾只需一周的项目,可能不需要版本控制系统。
参考文献
[BetterSCM] ● [*s95] §11, §13 ● [CVS]