<?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>William Hua的Blog &#187; 分布式版本控制</title>
	<atom:link href="http://www.williamhua.com/tag/%e5%88%86%e5%b8%83%e5%bc%8f%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.williamhua.com</link>
	<description>一个关于生活感悟、新奇见闻、互联网和消费电子的Blog</description>
	<lastBuildDate>Mon, 04 Jul 2011 01:29:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>开始以Mercurial作为主要版本控制系统</title>
		<link>http://www.williamhua.com/2009/06/use-mercurial-as-main-scm/</link>
		<comments>http://www.williamhua.com/2009/06/use-mercurial-as-main-scm/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 15:57:50 +0000</pubDate>
		<dc:creator>William Hua</dc:creator>
				<category><![CDATA[开源技术]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[分布式版本控制]]></category>

		<guid isPermaLink="false">http://www.williamhua.com/?p=141</guid>
		<description><![CDATA[之前，我一直用SVN作为日常的版本控制工具，很多代码和文档，都放在SVN版本库中。但是在家里用的时候总是很难保证有一台server一直开机，在我的破笔记本上开server又太耗资源，所以用久了以后总觉得提交代买和查看版本历史都很不方便（还有SVN那讨厌的无处不在的.svn目录）。前阵子在Google Doce的blog上看到Google Code开始向受邀用户提供Mercurial版本控制Hosting服务以后，我也花了点时间来学习了一下分布式版本控制系统。 分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法（它也可以使用中心服务器）。更改可以被合并到 DVCS 的任何其他用户的系统中，因此可以实现非常灵活的工作流。它的两个主要优点是：比集中的版本控制更灵活，因为它除了支持传统的（集中式）工作流，还支持其他各种工作流；它比集中式服务器快得多，因为大多数操作在客户机本地进行，而不需要网络操作。 对于分布式版本控制的理解，大家可以参考Better Explained的文章Intro to Distributed Version Control (Illustrated)。 当前比较流行的开源分布式版本控制系统有：Git、 Mercurial、 Bazaar和Darcs等，Git是Linux之父Linus Torvalds的力作，使用在Linux内核开发中，其他的几个也都是颇有来头，所以我应该选择谁来作为分布式版本控制的开始呢？因为对DVCS实在了解不多，只好从简单的入手，正好Mercurial的命令和之前比较熟悉的SVN接近，有TortoiseHg这样的图形化工具可用，而且Google的分析也显示它的性能不错。详细的分析，请看Analysis of Git and Mercurial 。更让我觉得这个选择没错的是刚刚过去的开发者大会期间，Google宣布Google Code开始正式支持Mercurial了。 Mercurial的文档工作做得不错，官方的wiki中可以找到不少的参考资料，从基本的安装、命令使用到对分布式版本控制的理解都以及和其他CMS在理念上的异同都可以找到，其中最有名的自然要属Bryan O&#8217;Sullivan的Mercurial: The Definitive Guide了（简称HGBook），本书将在今年由O&#8217;Reilly正式出版。值得注意的是，Bryan O&#8217;Sullivan在写作的过程中把完整的DocBook源文件放在了Mercurial版本库中供大家下载，我们可以拿到source以后进行修改，然后把修改的建议发给作者。i18n-zh有计划翻译Mercurial: The Definitive Guide，有兴趣的话可以去看看HGBook中文版的Mercurial仓库。 我也是分布式版本控制的初学者，下面还是给出一些不错的资源给大家，一起学习吧。 胡凯，为什么我们要放弃Subversion 风云，分布式的版本控制工具 猛禽，分布式版本控制（一） 分布式版本控制（二） Sparkle，我与Mercurial 系列等几篇文章]]></description>
		<wfw:commentRss>http://www.williamhua.com/2009/06/use-mercurial-as-main-scm/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Git和Repo扫盲——如何取得Android源代码</title>
		<link>http://www.williamhua.com/2009/04/git-and-repo-for-dummies/</link>
		<comments>http://www.williamhua.com/2009/04/git-and-repo-for-dummies/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 02:43:49 +0000</pubDate>
		<dc:creator>William Hua</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitWeb]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[分布式版本控制]]></category>

		<guid isPermaLink="false">http://www.williamhua.com/?p=140</guid>
		<description><![CDATA[Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件，它不同于Subversion、CVS这样的集中式版本控制系统。在集中式版本控制系统中只有一个仓库（repository），许多个工作目录（working copy），而像Git这样的分布式版本控制系统中（其他主要的分布式版本控制系统还有BitKeeper、Mercurial、GNU Arch、Bazaar、Darcs、SVK、Monotone等），每一个工作目录都包含一个完整仓库，它们可以支持离线工作，本地提交可以稍后提交到服务器上。分布式系统理论上也比集中式的单服务器系统更健壮，单服务器系统一旦服务器出现问题整个系统就不能运行了，分布式系统通常不会因为一两个节点而受到影响。 因为Android是由kernel、Dalvik、Bionic、prebuilt、build等多个Git项目组成，所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库，使得Git的使用更加简单。 这几天William为了拿Android最新的sourcecode，学习了一下git和repo的一些基本操作，整理了一个如何取得Android代码的How-To，今天把他贴上来。 1、Git的安装 在Ubuntu 8.04上安装git只要设定了正确的更新源，然后使用apt-get就可以了，有什么依赖问题，就让它自己解决吧。其中cURL是一个利用URL语法在命令行下工作的文件传输工具，会在后面安装Repo的时候用到。 sudo apt-get install git-core curl 2、安装Repo 首先确保在当前用户的主目录下创建一个/bin目录（如果没有的话），然后把它(~/bin)加到PATH环境变量中 接下来通过cURL来下载Repo脚本，保存到~/bin/repo文件中 curl http://android.git.kernel.org/repo >~/bin/repo 别忘了给repo可执行权限 chmod a+x ~/bin/repo 3、初始化版本库 如果是想把Android当前主线上最新版本的所有的sourcecode拿下来，我们需要repo的帮助。 先建立一个目录，比如~/android，进去以后用repo init命令即可。 repo init -u git://android.git.kernel.org/platform/manifest.git 这个过程会持续很长的时间（至少可以好好睡一觉），具体要多少时间就取决于网络条件了 最后会看到 repo initialized in /android这样的提示，就说明本地的版本库已经初始化完毕，并且包含了当前最新的sourcecode。 如果想拿某个branch而不是主线上的代码，我们需要用-b参数制定branch名字，比如： repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake 另一种情况是，我们只需要某一个project的代码，比如kernel/common，就不需要repo了，直接用Git即可。 git clone git://android.git.kernel.org/kernel/common.git 这也需要不少的时间，因为它会把整个Linux [...]]]></description>
		<wfw:commentRss>http://www.williamhua.com/2009/04/git-and-repo-for-dummies/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
	</channel>
</rss>

