home  -  about me  -  2009  -  2008  -  2007  -  2006  -  2005  -  nerd's substance  -  itch  -  shuffle  -  what
Mac  -  Photos
  Livid's Paranoid - nerd's substance - 使用 Bazaar 来管理源代码   
使用 Bazaar 来管理源代码
Bazaar 是一个使用 Python 写成以 GPL 方式授权的软件代码管理工具。同类的工具有 Subversion,git,CVS,RCS,Perforce,Visual SourceSafe 等。其中 Subversion 是近年来的热门解决方案,Apache FoundationGoogle CodeSourceForge 等开源开发协作网站都提供了对 Subversion 的支持,Subversion 的 2 位作者更是被挖到了 Google。

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

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

$ bzr whoami "Joe Doe <joe.doe@gmail.com>"

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

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

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

$ bzr push sftp://jod@jod.example.com/public_html/foobar.joe/
2 revision(s) pushed.

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

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

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

即可获得代码。如果别人也有那台服务器的 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。很适合在火车上写程序的家伙。:P

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

目前已经有一些开源项目在使用 Bazaar 进行管理,比如 Drupal,pkg-config,Samba 等。更详细的名单在这里:

http://bazaar-vcs.org/WhoUsesBzr [tags]bazaar, vcs, versioncontrol, sourcecontrol[/tags]
Bazaar 是一个使用 Python 写成以 GPL 方式授权的软件代码管理工具。同类的工具有 Subversion,git,CVS,RCS,Perforce,Visual SourceSafe 等。其中 Subversion 是近年来的热门解决方案,Apache FoundationGoogle CodeSourceForge 等开源开发协作网站都提供了对 Subversion 的支持,Subversion 的 2 位作者更是被挖到了 Google。

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

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

$ bzr whoami "Joe Doe <joe.doe@gmail.com>"

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

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

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

$ bzr push sftp://jod@jod.example.com/public_html/foobar.joe/
2 revision(s) pushed.

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

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

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

即可获得代码。如果别人也有那台服务器的 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。很适合在火车上写程序的家伙。:P

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

目前已经有一些开源项目在使用 Bazaar 进行管理,比如 Drupal,pkg-config,Samba 等。更详细的名单在这里:

http://bazaar-vcs.org/WhoUsesBzr
by ~Livid - [ nerd's substance ] - 2007-10-17 17:21:01 - 2007-10-17 17:17:11 - 7032+4554
Sponsor
M6
这里的评论功能已经关闭,如果你觉得这不公平,那么请到 V2EX 发表你的看法 > V2EX.com
Look Around...
Maybe you will be interested on these?
Mementos: Do you remember
  
  
    Mac.6.cn footbig.com go.6.cn
    RSS 2.0 XML Feed Valid RSS 2.0 XML Feed Get Firefox!
    PHP Powered!  Subscribe with Bloglines!
    Livid: Livid Von Torvalds
    This is the personal site of Xin Livid Liu. It started since 2005.

    You can view my more detailed profile on LinkedIn and Facebook. Or follow me on Twitter.

    This site is up for 2029 days, 930 articles have been viewed for 5753821+3684267 times, average 6186.90 times per article, regularly there are 3.21 new articles per week.
    Buddies: Dear
    Links: Outside the Window
    vik|coon - 38.107.191.115 - CCBot/1.0 (+http://www.commoncrawl.org/bot.html)

    vik|engine - This installation on Apache has got 10053538 overall meaningful hits.

    Project VIK - $Id: lividecay.php 8 2007-02-03 22:47:45Z livid $
      All my works, except where otherwise noted, are licensed under a Creative Commons License

      Technorati Profile

      Are you a turtle?