<?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>Behind the Code &#187; 快速入门</title>
	<atom:link href="http://yinwm.com/tag/%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8/feed/" rel="self" type="application/rss+xml" />
	<link>http://yinwm.com</link>
	<description>Thinking in Techique</description>
	<lastBuildDate>Fri, 06 Aug 2010 02:38:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>bzr快速入门（2）&#8212;- 采用本地分支的开发方式</title>
		<link>http://yinwm.com/2008/09/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%882%ef%bc%89-%e9%87%87%e7%94%a8%e6%9c%ac%e5%9c%b0%e5%88%86%e6%94%af%e7%9a%84%e5%bc%80%e5%8f%91%e6%96%b9%e5%bc%8f/</link>
		<comments>http://yinwm.com/2008/09/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%882%ef%bc%89-%e9%87%87%e7%94%a8%e6%9c%ac%e5%9c%b0%e5%88%86%e6%94%af%e7%9a%84%e5%bc%80%e5%8f%91%e6%96%b9%e5%bc%8f/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 08:58:25 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[bzr]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[快速入门]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=54</guid>
		<description><![CDATA[bzr 是一个分布式的版本控制工具，如果我们还那他当svn使用，那就有点暴敛天物了。 所以我们就得按照bzr的方式办事。 svn方式开发最大的问题就是当n个人开发不同的feature，又来回影响时候，基本上就只能使用branch了，否则就玩完了。这时候就得靠DVCS了。而对于所有的DVCS，都是天然的支持轻量级分支，或者天然的就应该按照分支进行开发。 我们可以按照如下的方法开发假设服务器是&#160; /server/repo我们在开发的时候不是想svn一样使用checkout来创建本地工作区，而是在本地做一个服务器代码库的分支，然后进行本地开发。以bzr为例子就是bzr branch /server/repo [local_proj_name]这时候这个local_proj_name是一个服务器工作区的分支，可以进行开发了，并且所有的提交都是本地的，不会影响到服务器的工作区。 如果你和别人一起共享一个服务器的代码库，随时获取最新的代码，在svn里面是使用update，在这里是使用pull，如果出现了和本地的冲突，哪么就需要使用merge来进行合并了。等你在本地工作区都开发好了，也本地提交好了，哪么使用push在传回服务器的代码库就可以了。 这里我想说一下pull和merge的区别。pull的意思是把代码同步成为服务器代码库的代码，并且版本号也发生变化。pull操作成功后，本地就是一个提交后的状态。merge的意思是把服务器代码库的代码，合并到本地，此时仅仅是内容的变化，版本是不会发生变化的。所以merge之后，本地是一个修改后的状态，还需要提交一次，本地才是一个提交后的状态。 比如服务器代码库只有一个文件，叫做readme.txt，在版本是9的时候，readme.txt的内容是No。版本号码是10的时候，内容是Yes。 如果我本地的工作区，是从版本号码为9做的本地分支。我现在pull下来，哪么我本地readme.txt的文件的内容是Yes，本地分支版本号码是10，处于以提交状态。如果是merge下来，哪么本地readme.txt的内容是Yes，本地分支版本号码是9，处于已修改状态，需要自己提交以下，是本地的版本号码达到10。]]></description>
			<content:encoded><![CDATA[<p>bzr 是一个分布式的版本控制工具，如果我们还那他当<a href="http://yinwm.cn/blog/2008/02/bzr-quick-start-1.html" target="_blank">svn使用</a>，那就有点暴敛天物了。 所以我们就得按照bzr的方式办事。</p>
<p>svn方式开发最大的问题就是当n个人开发不同的feature，又来回影响时候，基本上就只能使用branch了，否则就玩完了。这时候就得<a href="http://yinwm.cn/blog/2008/02/why-dvcs.html" target="_blank">靠DVCS</a>了。而对于所有的DVCS，都是天然的支持轻量级分支，或者天然的就应该按照分支进行开发。</p>
<p>我们可以按照如下的方法开发<br />假设服务器是&nbsp; /server/repo<br />我们在开发的时候不是想svn一样使用checkout来创建本地工作区，而是在本地做一个服务器代码库的分支，然后进行本地开发。以bzr为例子就是<br />bzr branch /server/repo [local_proj_name]<br />这时候这个local_proj_name是一个服务器工作区的分支，可以进行开发了，并且所有的提交都是本地的，不会影响到服务器的工作区。</p>
<p>如果你和别人一起共享一个服务器的代码库，随时获取最新的代码，在svn里面是使用update，在这里是使用pull，如果出现了和本地的冲突，哪么就需要使用merge来进行合并了。<br />等你在本地工作区都开发好了，也本地提交好了，哪么使用push在传回服务器的代码库就可以了。</p>
<p>这里我想说一下pull和merge的区别。<br />pull的意思是把代码同步成为服务器代码库的代码，并且版本号也发生变化。pull操作成功后，本地就是一个提交后的状态。<br />merge的意思是把服务器代码库的代码，合并到本地，此时仅仅是内容的变化，版本是不会发生变化的。所以merge之后，本地是一个修改后的状态，还需要提交一次，本地才是一个提交后的状态。</p>
<p>比如<br />服务器代码库只有一个文件，叫做readme.txt，<br />在版本是9的时候，readme.txt的内容是No。<br />版本号码是10的时候，内容是Yes。</p>
<p>如果我本地的工作区，是从版本号码为9做的本地分支。<br />我现在pull下来，哪么我本地readme.txt的文件的内容是Yes，本地分支版本号码是10，处于以提交状态。<br />如果是merge下来，哪么本地readme.txt的内容是Yes，本地分支版本号码是9，处于已修改状态，需要自己提交以下，是本地的版本号码达到10。</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/09/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%882%ef%bc%89-%e9%87%87%e7%94%a8%e6%9c%ac%e5%9c%b0%e5%88%86%e6%94%af%e7%9a%84%e5%bc%80%e5%8f%91%e6%96%b9%e5%bc%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bzr快速入门（1）&#8212;-像svn一样战斗</title>
		<link>http://yinwm.com/2008/02/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%881%ef%bc%89-%e5%83%8fsvn%e4%b8%80%e6%a0%b7%e6%88%98%e6%96%97/</link>
		<comments>http://yinwm.com/2008/02/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%881%ef%bc%89-%e5%83%8fsvn%e4%b8%80%e6%a0%b7%e6%88%98%e6%96%97/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 19:24:31 +0000</pubDate>
		<dc:creator>yinwm</dc:creator>
				<category><![CDATA[bzr]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[快速入门]]></category>

		<guid isPermaLink="false">http://yinwm.cn/wordpress/?p=37</guid>
		<description><![CDATA[bzr有很多种使用方法，我们首先介绍集中式的使用方法，你可以假装他就是svn。 bzr的基本语法是 bzr 命令 [参数] 首先创建一个代码仓库#bzr init-repo &#8211;no-tree ftp://user@host/repo-name这里使用了ftp作为代码仓库的中心服务器，bzr支持的协议有很多ftp，sftp,http,bzr等等，我这里使用了ftp为了方便。 命令init-repo是创建代码仓库的命令，&#8211;no-tree是说明这个代码仓库本身的物理位置是不参与开发的。 然后创建项目，更精确的说是创建一个分支#bzr init ftp://user@host/repo-name/proj1-trunk 然后checkout代码#bzr checkout ftp://user@host/repo-name/proj1-trunk proj1然后就是熟悉的场景了，可以随意的使用，折腾，捣乱，然后commit到中心代码库。其他的使用者也可以随时update获取最新的代码。怎么样，跟svn一样吧，甚至连基本的命令都一样，比如commit/ci，update/up，revert，info，state/st。 这里面要注意一个问题，就是使用init命令创建的是一个分支，一个branch。branch在bzr当中是非常重要的，如果你了解一些svn详细的东西，你会发现被管理的每一个目录都有一个叫做.svn的目录，也就是我们可以认为从任何的子目录开始都是一个完整的可以被单独checkout的小项目。而bzr则不然，他只是在每一个branch的目录下才有一个.bzr目录，也就是从这一点开始，才是branch的根，下层的任何目录都不能成为一个单独的独立结构。而这个branch是需要用init命令搞定的，不能想svn里面一样随随便便的就创建一个目录就完了。 所以从这里我们看出，bzr是完全可以按照svn的思想来使用bzr。不过，这不就没意义了，我为什么不直接用svn呢，所以我们在使用bzr的时候，还是有一些区别的，下篇再说。]]></description>
			<content:encoded><![CDATA[<p>bzr有很多种使用方法，我们首先介绍集中式的使用方法，你可以假装他就是svn。</p>
<p>bzr的基本语法是 <br />bzr 命令 [参数]</p>
<p>首先创建一个代码仓库<br />#bzr init-repo &#8211;no-tree ftp://user@host/repo-name<br />这里使用了ftp作为代码仓库的中心服务器，bzr支持的协议有很多ftp，sftp,http,bzr等等，我这里使用了ftp为了方便。 <br />命令init-repo是创建代码仓库的命令，&#8211;no-tree是说明这个代码仓库本身的物理位置是不参与开发的。</p>
<p>然后创建项目，更精确的说是创建一个分支<br />#bzr init ftp://user@host/repo-name/proj1-trunk</p>
<p>然后checkout代码<br />#bzr checkout ftp://user@host/repo-name/proj1-trunk proj1<br />然后就是熟悉的场景了，可以随意的使用，折腾，捣乱，然后commit到中心代码库。其他的使用者也可以随时update获取最新的代码。<br />怎么样，跟svn一样吧，甚至连基本的命令都一样，比如commit/ci，update/up，revert，info，state/st。</p>
<p>这里面要注意一个问题，就是使用init命令创建的是一个分支，一个branch。<br />branch在bzr当中是非常重要的，如果你了解一些svn详细的东西，你会发现被管理的每一个目录都有一个叫做.svn的目录，也就是我们可以认为从任何的子目录开始都是一个完整的可以被单独checkout的小项目。而bzr则不然，他只是在每一个branch的目录下才有一个.bzr目录，也就是从这一点开始，才是branch的根，下层的任何目录都不能成为一个单独的独立结构。<br />而这个branch是需要用init命令搞定的，不能想svn里面一样随随便便的就创建一个目录就完了。</p>
<p>所以从这里我们看出，bzr是完全可以按照svn的思想来使用bzr。不过，这不就没意义了，我为什么不直接用svn呢，所以我们在使用bzr的时候，还是有一些区别的，下篇再说。</p>
]]></content:encoded>
			<wfw:commentRss>http://yinwm.com/2008/02/bzr%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8%ef%bc%881%ef%bc%89-%e5%83%8fsvn%e4%b8%80%e6%a0%b7%e6%88%98%e6%96%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
