源代码管理的 10 条戒律

113 篇文章 0 订阅
3 篇文章 0 订阅

http://www.iteye.com/news/24449

源代码管理是开发工作中很重要的一部分,甚至可以说是很多开发者的生命。但是我们往往在这方面犯错。 

我在这里列出了十条建议,可以说是戒律。虽然我会用 Subversion 和 .NET 来做示例,但这些戒律和你用的编程语言还有源码管理工具无关。 

1. 彻底抛弃 VSS! 

VSS 已死,就让它离去吧。它曾经很有用,但是现在其他 VCS(Version Control System)已经远远超越了它。微软也决定从明年开始不再支持 VSS了。 

老实说,在1995年,VSS是一个伟大的工具,但是它的光环早已被它的晚辈——Subversion、Git 和 Mercurial 夺去。 

2. 没有进入版本库,它就不存在 

你应该每天把这条念一遍 ——“工作进展的唯一标准就是代码进了版本库”。在代码进入版本库之前,它相当于不存在。 

我承认你的代码藏在你机器的某个角落,但是对于其他人来讲,这有何意义?他们不能拿到你的最新版本,他们不能和你的版本合并,你也不能部署你的代码,一旦你的硬盘坏了,一切将烟消云散。 

如果你坚持执行这一条的话,你会发现其他的好习惯会随之而来。你会自觉的把任务分成小块并经常提交代码。你会更加频繁的更新、集成代码。最重要的是,经常提交代码说明了你正在做东西。 

3. 尽早提交,尽快提交,经常提交 

紧接上面一点,防止“幽灵代码”(只在你本地机器上能看到的代码)的唯一的方式就是把代码尽快的提交到版本库。这么做还有以下好处: 

  • 每次提交都会生成一个新的版本,给你回滚的机会。假如你把代码搞乱了,你是希望回滚到一小时前还是一个星期前?
  • 间隔的时间越长,代码合并越困难。合并代码从来不是一件好玩的事情。当你好几天都不提交代码,你会突然发现,你已经累计了50个冲突要解决,你大概会疯掉。
当你坚持经常提交代码的习惯以后,你会发现你的工作、代码提交会呈现出一定的规律。这个规律可以用来指导你的开发工作。当你发现你的团队好几天都没有代码提交的时候,你就会意识到 “something is wrong”。 

4. 在提交前检查你的更改  

提交代码到版本库看起来太简单了。反正在项目的根目录下有东西更改了,提交吧!这样会导致你提交了一堆垃圾。很多人看到下面的对话框的时候,往往是选择所有,然后搞定!于是你的代码库就被污染了,例如debug文件夹之类的。 



还有一些情况是人们提交代码前不检查自己到底更改了什么。例如一个项目配置文件,你会记得你改了什么吗?也许这次修改就不应该提交呢?如下图所示,这个Web.config文件为什么被修改了?你可以通过SVN工具对比来查看更改。对于一些可能被更改但是不需要进入版本库的文件,例如 Thumbs.db,你可以用 SVN 的“ignore”功能来排除它。 

 


5. 认真填写“commit messages”  

填写 commit message(提交注释)是有一点枯燥,但是请不要写“更新了一段代码”这种提交注释,你会把别人逼疯的。 

“commit message”的目的是解释你提交的代码中到底修改了什么。你也许不记得你一年前为什么提交一段代码,但是 SVN 的注释会让你想起来。 



所以,请不要写以下这些注释: 

  • 修复了一个bug
  • 有一个拼写错误
  • 更新1024
  • 这什么都不是
  • 提交了
你还有见过比这个更烂的注释吗?另外,任何一个人的注释应该是不一样的,而且从逻辑上来讲永远不可能一样,因为你每次提交代码的基础一定是不一样的,所以你做的事情不可能一样。 

6. 你必须自己提交代码,而不是让别人代劳  

这个听起来有些奇怪。但这种事情确实存在,而且我还遇到过不止一次。有一些团队为了保证代码库的干净,让一个人专门负责审核和提交代码。这并不是一个好习惯。 

首先,源代码管理并不是为了保持代码的纯净,起码在开发过程中不是这样。它的目的是让团队更频繁的集成各自的工作,当有问题的时候可以回退。在这个过程中,并不需要每一步都很完美。只有在版本发布的时候,我们才需要,或者尝试去达到“干净的代码”。 

还有,从开发者的角度来看,这么做等于没有源代码管理。因为它意味着没有代码集成,没有回退,没有blame log,什么都没有。你只是坐在那里写代码,然后在你也无法确定的时间把代码交给你的老板。 

7. 数据库的版本控制是必须的  

这是有很多人想做,但是觉得很困难而做不到的一点。这里的问题是,很多应用没有数据库根本无法运行。所以如果你不把数据库加入版本控制的话,你的应用是不完整的。 

大部分的版本控制系统只针对文件系统工作,例如 HTML、CSS、图片、配置文件等任何保存在文件系统中的东西。但是对于数据库中的数据却无能为力。 



不过现在也有一些数据库版本控制工具,例如 Red Gate 出品的  SQL Source Control 。关于这个工具我曾经写过很详细的文章  Rocking your SQL Sourc Control world with Red Gate ,我在这里就不赘述了。总之,数据库的版本控制也很容易了! 

8. 编译出来的文件不应该加入版本控制  

简单的说,就是任何自动生成的东西都不应该放在版本库里面。以 .NET 为例,所有“bin”、“obj”文件夹下面的东西(.dll、.pdb等等)都不应该加入版本库。 

为什么?因为如果这么做了,你团队的其他人会恨死你的。每次他们更新代码都会用你的编译输出来替代他们的编译输出,会导致他们本地的很多东西不能用。另外一个原因是,你完全没有必要把这些编译输出放在版本控制里面,它们只是在浪费服务器的硬盘和带宽。 

9. 别人不在乎你的个人配置  

很多时候,人们没有意识到他们正在提交自己的个人配置到版本库。开发工具往往会生成一些配置文件,记录你的文件路径、字体设置、快捷键设置等等,这些东西只对你有用。以 .NET 项目为例。 



10. 依赖项也需要添加到版本库  

虽然这是最后一条,但也是很重要的。如果你的代码需要依赖第三方的类库或者文件,你需要把这些文件也添加到版本库。你不能认为程序在你的机器可以跑,就在别人的机器上也能跑。你团队的其他成员也许没有这些依赖的文件,他们更新了你的代码以后,会导致项目无法编译或者程序无法运行。 

我今天还遇到一个这样的问题。我拉下了很久以前的一个项目,然后出现下面的编译错误。 



这个项目也是我开发的,以前的工作环境总是有 NUnit 的,但是现在没有了,所以出现了这些错误。 

总结  

这十条的每一条都很简单,老实说都是很基础的东西:及时、尽早的提交代码,充分了解你提交的东西,并确认它们确实需要被提交到代码库,解释你的提交,自己提交自己的代码,不要忘记数据库版本控制,不要忘记依赖项。但请你忘记 VSS。 

英文原文: The 10 commandments of good source control management

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值