Bazaar 使用 Bazaar 来管理源代码

liuxue.gu@hotmail.com · 2008年06月14日 · 34 次阅读

使用 Bazaar 来管理源代码

Bazaar 是一个使用 Python 写成以 GPL 方式授权的软件代码管理工具。同类的工具有 Subversion,git,CVS,RCS,Perforce,Visual SourceSafe 等。其中 Subversion 是近年来的热门解决方案,Apache Foundation,Google Code 和 SourceForge 等开源开发协作网站都提供了对 Subversion 的支持,Subversion 的 2 位作者更是被挖到了 Google。

Subversion 是一个中心化(centralized)的方案,即所有的项目参与者都需要向同一个代码管理库提交代码。在大部分的安装中,这些代码管理库位于一个 Internet node 上,通常需要使用 http 或者 https 协议访问。因此,每次进行代码提交的时候,都需要 Internet connectivity。如果开发者在本地的代码中做了足够大的改变,而又不想马上提交到 Subversion,却又想自己对这些变化进行管理,就会比较麻烦。

Bazaar 使用了一种不同的方式。当一个项目开始的时候,运行:

$ bzr whoami "Joe Doe <[email] joe.doe@gmail.com[/email]>"

首先对自己的身份进行标识。这个命令只需要运行一次。然后,在代码目录中运行:

$ cd my-project $ bzr init . $ bzr add $ bzr commit -m "Initial import"

即可将 my-project 纳入了 Bazaar 进行管理,并且进行了一次代码提交。这是和 Subversion 很不同的一点,即代码可以不需要 Internet 就在本地进行提交。然后,到一定阶段的时候,你或许想把代码发布到其他地方,比如你的一台远程主机上自己的帐号目录中:

$ bzr push s[url]ftp://jod@jod.example.com/public_html/foobar.joe//url][ 2 revision(s) pushed.

通过 sftp 协议进行的 push 是非常安全的。而且不需要在服务器上安装任何特殊的软件。常规的 Unix 服务器即可满足全部需求。

如果别人想获得你的代码,只要发布到服务器上的那个目录是一个可以通过 http 协议访问到的目录的话:

$ bzr branch [url]http://jod.example.com/foobar.joe//url][

即可获得代码。如果别人也有那台服务器的 ssh 账户,那么他也可以通过 sftp 协议进行 bzr branch。当你再次将一些更新 push 到服务器上时,别人只要运行:

$ cd foobar.joe $ bzr merge

即可获得来自你的更新。而 Bazaar 的不同之处再次体现:如果别人已经在你的代码上做了一些更改(some hacking),那么这些更改并不会因为 bzr merge 而消失,运行:

$ bzr diff

就可以看到 merge 之后的本地代码与远程代码的区别。

于是,像 Bazaar 这样的方式,被称之为一种去中心化(decentralized)的方式,和 Subversion 很不同。对于服务器的需求也比 Subversion 低了很多。而且,如果你在一个没有网络的地方想 commit 的话,Bazaar 就提供了这样的可能性。然后到了有网络的地方再通过 sftp 协议进行 push。很适合在火车上写程序的家伙。

Bazaar 的网站上有更多详细的文档和有趣的插件:[url]http://bazaar-vcs.org//url][

目前已经有一些开源项目在使用 Bazaar 进行管理,比如 Drupal,pkg-config,Samba 等。更详细的名单在这里: [url]http://bazaar-vcs.org/WhoUsesBzr/url][

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