Mercurial Mercurial 续

liuxue.gu@hotmail.com · 2008年11月12日 · 1 次阅读

上次谈到一些 Mercurial 的事情,后来因为忙别的事情没有继续写下去。中途跟 cyfdecyf 通过几次 email 讨论 Mercurial。总体来说,我对 Mercurial 和分布式版本管理的理解还是比较松散的,比较难形成文章,但还是很希望把我所知道的写出来。

我对分布式版本管理的理解很简单。首先这里假设你有一般版本管理软件的概念(CVS 或者 SVN)。假设你在家里装了一个 SVN 服务器,你在家里编写的代码都提交上去。在公司也装了一个 SVN,你在公司编写的代码也都提交上去。这里就有两个完全独立的 SVN 服务器了。分布式版本管理,就是这两个 SVN 服务器之间可以互相提交,其操作就像你提交上其中一台 SVN 那样,SVN 之间互相提交就会将多个 changeset 同时提交。而且这两个 SVN 服务器没有主次之分,这样处理是很容易混乱的,实际上,我们会架设另一个 SVN 服务器,作为两个 SVN 的父,两个 SVN 向父提交 changeset。这个行为仅仅是方便我们管理的一个比较好的参考做法,并没有强制。另外,当然 SVN 服务器是不支持互相提交的,于是我们需要一个分布式版本管理软件。

个人觉得,一台 SVN 就好像一台 MySQL,我们只有一个数据库。而分布式版本管理就好像 Master-Master MySQL 集群。有经验的朋友就会知道,在集群中使用自增字段是不可取的,就像 SVN 的 changeset id 是自增的不能适应分布一样。做 MySQL 集群很经常会用 UUID 作为主键,分布式版本管理也使用了类似的机制来保证多个库之间的 changeset 有唯一的 ID 不会冲突。这个已经是比较细节的处理问题。这里暂时不打算细节研究具体的机制或者使用方法,先有一个大概的概念,看软件的 refrence 很快会上手的。

再待续

预告: 权限问题 Mercurial 目前的情况 远程模式 在 Dreamhost 上使用 Mercurial Mercurial 基本使用

http://weavesky.com/2008/03/19/mercurial-more/

暂无回复。
需要 登录 后方可回复。