<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sparkle&#039;s Workshop &#187; mercurial</title>
	<atom:link href="http://weavesky.com/tag/mercurial/feed/" rel="self" type="application/rss+xml" />
	<link>http://weavesky.com</link>
	<description></description>
	<lastBuildDate>Fri, 30 Dec 2011 08:14:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mercurial和Git的主要区别</title>
		<link>http://weavesky.com/2008/08/17/difference-between-mercurial-git/</link>
		<comments>http://weavesky.com/2008/08/17/difference-between-mercurial-git/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 03:17:58 +0000</pubDate>
		<dc:creator>Sparkle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://weavesky.com/?p=550</guid>
		<description><![CDATA[1、Mercurial用Python开发，Git用C开发，相对来说，Git比较快，但是Mercurial的性能也不差 2、Mercurial对windows平台支持比较好，而且有一个开发中的TortoiseHg，而且NetBeans内置支持，Git主要还是用命令行，而且对windows不太友好 3、Mercurial核心指令只有10个左右，Git核心指令几十个，全部指令更多了，Mercurial比较简单，也容易上手 4、Mercurial一个目录树就是一个分支，需要使用分支就必须clone一份完整的目录树，这样比较浪费空间，而且使用IDE的时候要为新分支开一个新项目，Git支持本地分支，在一个目录树里面开无限个分支，切换非常方便迅速。这个功能也是我慢慢迁移到Git上的主要原因 5、Git内置对SVN的支持，现在也很多人在SVN repo上使用Git，方便自己的分支开发，当然跟别人合作还是会受到SVN本身的限制，Mercurial有一个第三方的hgsvn，最初的版本还有编码问题，现在已经修正了，但是它只能从SVN导入数据到Mercurial，不能把在Mercurial做的提交导入SVN，作者说未来会制作这个功能，这样就限制了hgsvn的使用，只能作为类似备份的性质 Related PostsMercurial续我与Mercurial]]></description>
			<content:encoded><![CDATA[<p>1、Mercurial用Python开发，Git用C开发，相对来说，Git比较快，但是Mercurial的性能也不差<br />
2、Mercurial对windows平台支持比较好，而且有一个开发中的TortoiseHg，而且NetBeans内置支持，Git主要还是用命令行，而且对windows不太友好<br />
3、Mercurial核心指令只有10个左右，Git核心指令几十个，全部指令更多了，Mercurial比较简单，也容易上手<br />
4、Mercurial一个目录树就是一个分支，需要使用分支就必须clone一份完整的目录树，这样比较浪费空间，而且使用IDE的时候要为新分支开一个新项目，Git支持本地分支，在一个目录树里面开无限个分支，切换非常方便迅速。这个功能也是我慢慢迁移到Git上的主要原因<br />
5、Git内置对SVN的支持，现在也很多人在SVN repo上使用Git，方便自己的分支开发，当然跟别人合作还是会受到SVN本身的限制，Mercurial有一个第三方的hgsvn，最初的版本还有编码问题，现在已经修正了，但是它只能从SVN导入数据到Mercurial，不能把在Mercurial做的提交导入SVN，作者说未来会制作这个功能，这样就限制了hgsvn的使用，只能作为类似备份的性质</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://weavesky.com/2008/03/19/mercurial-more/" title="Mercurial续">Mercurial续</a></li><li><a href="http://weavesky.com/2008/01/25/mercurial-and-me/" title="我与Mercurial">我与Mercurial</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://weavesky.com/2008/08/17/difference-between-mercurial-git/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mercurial续</title>
		<link>http://weavesky.com/2008/03/19/mercurial-more/</link>
		<comments>http://weavesky.com/2008/03/19/mercurial-more/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 15:38:50 +0000</pubDate>
		<dc:creator>Sparkle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://weavesky.com/2008/03/19/mercurial%e7%bb%ad/</guid>
		<description><![CDATA[上次谈到一些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基本使用 Related PostsMercurial和Git的主要区别我与Mercurial]]></description>
			<content:encoded><![CDATA[<p><a href="http://weavesky.com/2008/01/25/mercurial-and-me/">上次谈到一些Mercurial的事情</a>，后来因为忙别的事情没有继续写下去。中途跟<a href="http://chenyufei.name/blog/">cyfdecyf</a>通过几次email讨论Mercurial。总体来说，我对Mercurial和分布式版本管理的理解还是比较松散的，比较难形成文章，但还是很希望把我所知道的写出来。</p>
<p>我对分布式版本管理的理解很简单。首先这里假设你有一般版本管理软件的概念（CVS或者SVN）。假设你在家里装了一个SVN服务器，你在家里编写的代码都提交上去。在公司也装了一个SVN，你在公司编写的代码也都提交上去。这里就有两个完全独立的SVN服务器了。分布式版本管理，就是这两个SVN服务器之间可以互相提交，其操作就像你提交上其中一台SVN那样，SVN之间互相提交就会将多个changeset同时提交。而且这两个SVN服务器没有主次之分，这样处理是很容易混乱的，实际上，我们会架设另一个SVN服务器，作为两个SVN的父，两个SVN向父提交changeset。这个行为仅仅是方便我们管理的一个比较好的参考做法，并没有强制。另外，当然SVN服务器是不支持互相提交的，于是我们需要一个分布式版本管理软件。</p>
<p>个人觉得，一台SVN就好像一台MySQL，我们只有一个数据库。而分布式版本管理就好像Master-Master MySQL集群。有经验的朋友就会知道，在集群中使用自增字段是不可取的，就像SVN的changeset id是自增的不能适应分布一样。做MySQL集群很经常会用UUID作为主键，分布式版本管理也使用了类似的机制来保证多个库之间的changeset有唯一的ID不会冲突。这个已经是比较细节的处理问题。这里暂时不打算细节研究具体的机制或者使用方法，先有一个大概的概念，看软件的refrence很快会上手的。</p>
<p>再待续</p>
<p>预告：<br />
权限问题<br />
Mercurial目前的情况<br />
远程模式<br />
在Dreamhost上使用Mercurial<br />
Mercurial基本使用</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://weavesky.com/2008/08/17/difference-between-mercurial-git/" title="Mercurial和Git的主要区别">Mercurial和Git的主要区别</a></li><li><a href="http://weavesky.com/2008/01/25/mercurial-and-me/" title="我与Mercurial">我与Mercurial</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://weavesky.com/2008/03/19/mercurial-more/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>我与Mercurial</title>
		<link>http://weavesky.com/2008/01/25/mercurial-and-me/</link>
		<comments>http://weavesky.com/2008/01/25/mercurial-and-me/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 15:47:17 +0000</pubDate>
		<dc:creator>Sparkle</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://weavesky.com/2008/01/25/%e6%88%91%e4%b8%8emercurial/</guid>
		<description><![CDATA[最初知道 Mercurial这个工具其实是因为去年6月份看了cyfdecyf的一篇blog分布式版本管理工具：git &#038; mercurial(作者搬迁了blog,新地址是这里).然后断断续续有在使用,一直想把一些经验写出来.最近刚好遇到云风在研究分布式版本管理,还是动手把一些经验写下来吧 一直一来都是用CVS,然后是SVN来做版本管理,最初认识分布式版本管理,是一个叫SVK的工具,是一个台湾人的作品,本身基于SVN,令到SVN可以分布式工作.当时觉得安装非常麻烦就没有研究下去了,而且本身对这样的功能需求也不大.后来Linus因为不满现有版本管理软件的问题,自己花了两个星期写了一个分布式版本管理Git,现在Linux kernel等源代码已经完全工作在Git的管理之上了.但是Git本身非常晦涩难懂,而且只能在Linux下运行,我本身也主要用Windows来工作,因此也没有深入研究. 直至看到 cyfdecyf的文章,这篇文章有坚定我研究分布式版本管理的信心.集中式版本管理的缺陷, cyfdecyf和云风都有描述了一些例子,我认为那些例子都很典型.如果所有开发人员都在一个房间里面,集中式版本管理是最好的,最明显的例子就是公司的开发,大家都能直接访问到服务器,网络不会中断.这种情况下,使用分布式版本管理反而增加了复杂性.但是,如果开发人员不是在同一个房间,甚至在不同的国家.当然你也可以在Internet上假设一个SVN服务器.但是,开发人员不一定有网络,或者网络不一定很好.而每次提交,或者同步,都要花上好几分钟或者更长时间,这非常影响开发.又或者你只是私人的项目,而你有没有能力假设公开的SVN服务器.而且我只是一个人,为什么每次都要提交到外边的服务器.当然也可以在自己的机器上面架设一个SVN,但是如果你有两台以上的机器就会觉得很麻烦了. 所有的这些场景,其实你需要一个分布式版本管理.cyfdecyf的文章最后在选择Git的代替品,定了用Mercurial.那我也从Mercurial开始吧.不过Mercurial的中文资料非常少,我始终不理解分布式版本管理的原理.最后,非常搞笑的情况是,我其实是看了Git的一份中文资料才真正明白的,也推荐大家从Git的中文资料入手. 待续&#8230; Related PostsMercurial和Git的主要区别Mercurial续]]></description>
			<content:encoded><![CDATA[<p>最初知道 Mercurial这个工具其实是因为去年6月份看了cyfdecyf的一篇blog<a href="http://my.donews.com/chenyufei/2007/06/24/post-070624-094733-899/">分布式版本管理工具：git &#038; mercurial</a>(作者搬迁了blog,新地址是<a href="http://chenyufei.name/blog/2007/06/24/post-070624-094733-899/">这里</a>).然后断断续续有在使用,一直想把一些经验写出来.最近刚好遇到云风在<a href="http://blog.codingnow.com/2008/01/distributed_version_control.html">研究分布式版本管理</a>,还是动手把一些经验写下来吧</p>
<p>一直一来都是用CVS,然后是SVN来做版本管理,最初认识分布式版本管理,是一个叫SVK的工具,是一个台湾人的作品,本身基于SVN,令到SVN可以分布式工作.当时觉得安装非常麻烦就没有研究下去了,而且本身对这样的功能需求也不大.后来Linus因为不满现有版本管理软件的问题,自己花了两个星期写了一个分布式版本管理Git,现在Linux kernel等源代码已经完全工作在Git的管理之上了.但是Git本身非常晦涩难懂,而且只能在Linux下运行,我本身也主要用Windows来工作,因此也没有深入研究.</p>
<p>直至看到 cyfdecyf的文章,这篇文章有坚定我研究分布式版本管理的信心.集中式版本管理的缺陷, cyfdecyf和云风都有描述了一些例子,我认为那些例子都很典型.如果所有开发人员都在一个房间里面,集中式版本管理是最好的,最明显的例子就是公司的开发,大家都能直接访问到服务器,网络不会中断.这种情况下,使用分布式版本管理反而增加了复杂性.但是,如果开发人员不是在同一个房间,甚至在不同的国家.当然你也可以在Internet上假设一个SVN服务器.但是,开发人员不一定有网络,或者网络不一定很好.而每次提交,或者同步,都要花上好几分钟或者更长时间,这非常影响开发.又或者你只是私人的项目,而你有没有能力假设公开的SVN服务器.而且我只是一个人,为什么每次都要提交到外边的服务器.当然也可以在自己的机器上面架设一个SVN,但是如果你有两台以上的机器就会觉得很麻烦了.</p>
<p>所有的这些场景,其实你需要一个分布式版本管理.cyfdecyf的文章最后在选择Git的代替品,定了用Mercurial.那我也从Mercurial开始吧.不过Mercurial的中文资料非常少,我始终不理解分布式版本管理的原理.最后,非常搞笑的情况是,我其实是看了Git的一份中文资料才真正明白的,也推荐大家从Git的中文资料入手.</p>
<p>待续&#8230;</p>
<h2  class="related_post_title">Related Posts</h2><ul class="related_post"><li><a href="http://weavesky.com/2008/08/17/difference-between-mercurial-git/" title="Mercurial和Git的主要区别">Mercurial和Git的主要区别</a></li><li><a href="http://weavesky.com/2008/03/19/mercurial-more/" title="Mercurial续">Mercurial续</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://weavesky.com/2008/01/25/mercurial-and-me/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

