分布式版本控制软件水银(Mercurial)使用指南5(完)

Repository Architecture

翻译自:http://hginit.com/05.html

水银给了你相当大的建库自由度。由于合并是如此好用,你可以根据你的开发进度来维护一些特殊用途的仓库

我们的菜单已经变的相当漂亮了:

图1

我们来更加仔细地看一看变更集的序号:

图2

数字的第一部分,13,很短也很方便。它只有一个问题……它不可靠!

当团队里的人各自工作并且将其成果合并,那些短号是不同步的:

图3

因此,我没办法跟人们说:“好吧,咱们来将版本转移到变更集13上。”因为每个人的13有可能是不同的。这就是为什么那个疯狂的十六进制数存在的原因。

图4

这个十六进制数在所有的仓库中都是一致的并且永远不会改变。好了,现在我们可以给大家说,“现在让我们移动到变更集1b03ab783b17!但如果我们能给这个变更集一个名字岂不是更好吗?”

是的,你可以这么做。这叫tag

图5

我们现在来看看log:

图6

注意到添加tag这个动作也形成了一个变更集,并且自动为我提交了。因此,我现在可以使用Version-1.0来表示1b03ab783b17

接着开始开发Guac 2.0

图7

提交:

图8

“太咸了!”有顾客抱怨。

这时我们可以用hg up命令回到Version-1.0版本

图9

现在可以解决他的问题:

图10

并且:

图11

水银告诉我,我又创造了一个新的头。现在有两个头:2.0是我之前在上面工作的头,1.1是我刚刚提交的头。

图12

现在我可以把这个1.1版本给客户,然后回到version 2.0开始工作。

图13

现在只有一个问题……解决的太咸的问题没有放在2.0版本上。这该如何解决?

图14
图15

啊哦。我必须要合并标签。这是水银中的一个讨厌的问题。这个问题就在于在水银中,标签只是一个叫.hgtags的文件,并且也在版本控制的范围内。因此,你需要时不时地手动合并一下.hgtags这个文件。不管何时发生这个合并的动作,你要做的很简单……即总是保证每一行对应到一个版本就行了。

图16

刚刚所描述的是一种简单的,回到历史版本,修改,再合并到当前版本的一个方法。而事实上在软件工程中,这样的事几乎随时都在发生。因此,水银提供了一个更加强健的方式来解决这一问题。

因此,我现在要撤销1.0之后的所有工作,并且将仓库返回到刚刚创建完1.0版本的时候。这样,我就可以展示当工作在一个未来的版本时,如何修复客户的问题。

图17

想法是这样的:我们将创立两个仓库,一个叫做stable,而另一个叫做dev

叫做stable的仓库装着我们给客户发布的最新的主版本。不论何时你需要修复一个紧急的bug,你就在stable里面做。

dev仓库用于下一个版本的开发。

当1.0版本固定之后,就可以将stable克隆到dev中。

图18

现在我就有两个相等的仓库了。

图19

由于一直到变更集14,这些仓库的历史都是一样的。因此水银会使用一个叫“硬链接”的技巧来避免在硬盘中存放两个拷贝。这使得hg clone操作非常快速而低耗,因而可以放心地在本地克隆许多仓库。

现在我们开始在dev这个仓库里面工作:

图20

并且在stable仓库中修改了盐的问题:

图21

将之标签为1.1

图22

现在呢,我们可以时不时地将stable中修改的问题拉到dev中:

图23

这是我们现在做的:

图24

如果你能理解上面的那张疯狂的图的话,那说明你水银已经掌握地不错了。要点就在于,stable仓库中只有bug的修复,而dev仓库中有新的代码并且会将bug的修复合并进去。

使用多个仓库的情景还有一些:

  • 你可以建立一个团队的仓库,然后让一些人在此基础上开发一个新的功能。当它们结束工作,并且这个功能可以很好地运行之后,你可以将这个变更从团队仓库推送到主开发仓库,这时所有的人都能看到这个新功能。
  • 你可以为测试人员建立一个QA的仓库,你可以把你需要测试的代码放到QA的仓库中去(而不是直接放到主仓库中去)。当测试通过之后,你可以将QA仓库里的东西推送到主开发仓库中去。通过这个方式,主仓库中的代码总是测试过的。
  • 由于每个开发人员都有它们自己的仓库,因而你可以从你的朋友那儿clone一份过来做实验。这样就不会影响到整个团队。

在大而复杂的组织中,你可以自由结合这些技巧,从而创建一堆互相关联的仓库。每个功能都要经历测试和集成,它会被拉地越来越高直到最终你的新代码可以被放到主仓库中并且可以被客户得到。

图25

自测

以下是你读完这篇教程之后应该能掌握的:

  1. 给版本打上版本号,并且能够回到这个版本
  2. 用“stable”仓库和“dev”仓库来组织你的团队

好了,本教程已经到达尾声了。这个入门教程没有覆盖到水银的方方面面,不过好在已经有非常多的资源可以引领你更深入地了解水银。这里推荐一本覆盖面较为全面的书给大家。


译者行之写在最后:

有简友问水银与Git的区别。其实,两者都是分布式版本控制系统。应该说,大同小异而各有优势。不过,如果你是像我这么不Geek的程序员,懒得在命令行里面打命令的话,可以试试水银哦~总觉得Git是给人摆酷用的。要说简单方便,还是水银。

安装水银时可以直接安装tortoisehg。光从图形界面的使用舒适感来说,TortoiseHg确实要比TortoiseGit要好用一些。TortoiseHg的Workbench还是相当强大的。

图26

另外,水银开web服务也特别方便。特别适合局域网内的工作协同。

图27

你可以让任意一台联网的电脑在5秒钟之内开启服务,这样其他人就可以访问这台电脑上的仓库啦。

可能有人会问,既然TortoiseHg这么好用,直接教怎么用TortoiseHg就好啦,干吗给这么一堆命令行教程?

然而我想说的是,重要的是思想好吗?这篇教程的重点在于用水银希望的工作方式去思考。知道了这,你觉得还需要专门学TortoiseHg怎么用吗?

所以,这里就不展开介绍TortoiseHg了。只留下四个字,给大家点信心。就是TortoiseHg特别好用

最后,我想给自己留一条后路。也就是想告诉大家,虽然我翻译这教程有顶水银损Git之嫌。但是,我最近也确实在尝试使用Git~毕竟人家有时候还是想装一下Geek的:)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容