您的位置:首页 > 编程语言

善用分布式版本管理系统管理个人代码

2010-01-18 00:17 183 查看
大多数人都知道或者善用多种版本管理系统,传统集中式版本管理系统有CVS、SVN等,后来,出现了一些分布式管理系统,如GIT、Mercurial等。几乎所有有开发工作的公司,都会选择一个版本管理系统,并且制定一些规范来管理代码,道理很简单,使用版本管理系统能在多人开发,跟进bug,追查问题方面减少很多管理和沟通的成本。

但是,我觉得个人的代码,包括一些软件配置文件,完全可以使用分布式版本管理系统来管理,可以让我们减轻很多麻烦。

使用传统的集中式版本控制软件来管理,好处如下:

不用担心因为无意的错误修改,删除而丢失过去的代码
可以随时查看历史情况,你就不用为“xx功能、yy修改到底是什么时候加进来的,为什么要加”这类事情而挠破头皮了
可以进行分支开发,比如说一个功能你不是很确定能否实现,拉一个分支开发就是了

更进一步,使用分布式的版本控制还有如下好处:

在本地就有版本仓库,你可以在任何时候进行ci和roolback,无需联网
超级快速的分支切换
方便的和他人(其他机器)共享代码,一个push,或者pull,就能快速的同步修改

下面我举几个例子来让大家感受一下善用分布式版本管理的好处。

保证多台机器上的配置文件统一

我们有很多很多配置文件,尤其是linux下。vim配置,apache站点设置,桌面的配置,pidgin的账号设置等等。

但是如果有多台计算机,如果两台机器上配置不统一,用起来不顺手,更可能会带来麻烦,我们需要找到这些配置文件,并且拷贝一份最新的到当前机器,但是如果两边都有修改,就可能会丢失修改,或者需要手动merge。

过去可能用人使用过rsync来同步文件,能解决部分问题,但是如果使用分布式版本管理系统,在每台机器上都有一个独立的代码仓库,用这来管理配置文件再方便不过了!

首先,我们现在一台拥有最新版本配置文件的机器上初始化一个版本库

cd ~/
hg init
hg add .vimrc .screenrc .fvwm #添加所有你关注的配置文件


然后,一旦有新机器需要使用这个配置,clone一份即可

cd ~/
hg clone ssh://berg@lastPC://home/berg/
hg up


如果在任何一台机器上有修改,只需要ci到当前机器,并且到其他机器上pull这份修改。

hg ci
ssh berg@anotherPC://home/berg/


我们不需要关心代码的合并,也不需要关心配置文件的具体名称和位置(在linux下面,所有的配置都是隐藏文件),一切细节都交给mercurial来管理。

使用中心服务器

分布式管理原则上是没有一个强制的中心服务器,但是如果我们在管理的规则中加上中心服务器,在某些时候就能避免一些尴尬的发生。

举一个例子,假设我有三个开发环境,一台在公司,一台在家里,还有一台服务器。在公司时,我家里的机器是离线的,在家里则反过来。于是我白天在公司开发完毕后,想在家里获得最新的版本,最简单的办法就是在服务器上架设一个中心版本库,下班时,push代码到服务器上,回家就可以直接pull了。

使用中心服务器可以避免在需要开发时,发现最新版本所在计算机不在身边,并且处于离线状态的尴尬。

灵活的分支开发

不要以为分支功能在小项目中就毫无用处,有的时候,善用分支可以减少很多麻烦。而集中的版本控制系统处理分支很麻烦,让人避退三舍,可是到了分布式版本控制这里,分支变得很简单,看看下面的例子。

我在开发一个项目时,遇到了一个较大的修改,涉及面较广。

如果直接在主干上开发,如果在开发过程中发现了bug,或者其他临时插入的想法,我有两种选择:

直接在线上修改,或者重新clone一份到本地的其他目录进行开发
把“projectA”这个项目做为一个分支在本地开发

两种好处的优劣是很明显的,第一种,我要么需要冒线上修改的风险,要么需要在本地配置另外一套环境;而第二种,我只需要在碰到其他问题的时候,将分支切换回去就好了。下面是命令示例:

首先,将本地仓库的当前branch设置成项目A的名称:projectA

hg branch projectA


我进行projectA分支的开发,如果在开发的过程中,我需要切换到原来的分支:

hg ci -m "projectA commit"

hg up default #切换到主干


开发完毕后提交并且push到线上:

hg ci -m "modified something"

hg push


接下来我又能迅速的切换回原来开发到原来开发到一半的uploadify分支

hg up projectA


分布式版本管理的好处一下就体现出来了,我可以在本地迅速的切换分支,分支建立的成本也很低。这样能让我们更灵活的应对需求

小结

好了,本文就写到这里。小结一下,使用分布式版本管理系统管理个人mini项目、软件配置文件,能给开发和管理带来很大的便利,使用中心版本仓库能避免机器离线导致无法获取最新代码的问题,善用分支能让开发者更灵活的应对需求。

转自:冰山一角http://www.pmme.cn/archive/manage-your-code-with-mercurial/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: