git与项目review机制的配合

之前提过组内使用的代码提交制度,由于每次从编码到提交review到最后提交都有相当的流程要走,而且为了回溯问题方便,最好每次只提交一个功能,这样就导致了一个问题:提交代码流程过于漫长,另外在提交review之后自己不能闲着还需要进行其他功能的开发,这样如果改动到已经提交review的代码,又会有影响.

这样看来,质量和速度是不能两全的?

还好有git.git最大的好处也许是,它是一个分布式的代码管理工具,即使没有服务器端,也可以在本地给你建立代码库,因此可以起到本地备份代码的作用.另外,它的分支功能也十分强大.

下面详解如何使用git配合review机制,高效率的开发,既保证了开发新功能,也能在新功能在提交review之后继续开发新的功能.

这里不去解释git本身相关的一些概念了,下面先假设读者已经有一些git的知识(实际上我也是现学现用:).Pro git是一份不错的参考文档,推荐.

假设现在要开发一个新的功能A,首先使用git的分支命令建立分支A吧,然后blabla修改你的代码.改好之后就可以提交review了.在这个review的间歇期,为了赶进度,你需要做功能B,所以首先切换到master分支,然后再从里面建立分支B,然后继续blabla修改功能B所需要的代码.即使功能A,B的修改文件有重复,也不会相互影响的,这是保证了即提交review又跟进新功能的关键点.

这里有一个问题,代码需要不停的从代码库获得最新的代码,每次从真正的代码库获得新代码时,都需要切换到master去,也就是随时保证master主干的代码是最新的.如果在你开发某功能的间歇,代码已经被更新了,那么就需要首先切换到master上更新代码,然后再切换回相应的修改分支去,merge master的代码.另外,如果功能A在功能B之前提交到代码库,开发功能B的分支也需要相应去merge开发功能A时的代码,这些git都有命令搞定,很便捷.

OK,其实很简单,都是git已经提供的功能了,只是稍微阐述一下在我们项目组内那种提交制度上如何使用上罢了.

另外,还有一点需要提醒,我们自身的代码库使用的是SVN,里面有很多svn相关的文件,在将这些代码目录添加到git中的时候,最好在.gitignore中编写一些过滤规则,把这些无关代码的文件过滤掉.其他你不需要关注的文件,也可以类似过滤掉.

4 Comments

  1. Jacky 说:

    看看这篇文章咯。:)
    http://blog.renren.com/blog/bp/Qmid_L7wy1

    [回复]

  2. lzprgmr 说:

    git不熟悉,但你提到要新开一个branch出来,是本地的,还是server的,如果是server上,那不是污染大了。

    我用的比较多的是perforce,其有一个workspace的概念,只要切换本地的workspace,就能轻松解决此问题,不知git有没有这个概念 -- 应该会支持吧

    [回复]

  3. 那谁 说:

    本地的,git可以没有server端.我们的代码库使用的SVN.两者不影响.

    [回复]

  4. kui 说:

    小弟菜鸟,真心希望博主大牛可以指点一下编程学习!

    [回复]

Leave a Reply