您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 对话-UNIX:Bazaar
保存代码的好地方软件开发的特点是重构、进退两难、发现缺陷、顿悟和突破;所以管理更改是必不可少的。Bazaar是一种强大的新一代源代码控制系统,它能够适应任何开发团队的工作模式。本文简要介绍Bazaar。马克·吐温曾经说,“当您对一篇文章已经满意时,才是写作真正开始的时候。只有到那时,您才能清楚地认识到您真正想表达的是什么。”这一观点非常正确,这也适用于软件。只有在编写应用程序之后,问题的性质、范围和微妙之处才会逐渐清晰起来。在输入第一行代码到最终打包发布之间会经历许多波折,包括发现最初的方法错误、遇到死路、重写、重构、进退两难、发现缺陷、顿悟和突破。常用缩写词API:ApplicationprogramminginterfaceFTP:FileTransferProtocolHTTP:HypertextTransferProtocolSFTP:SecureFileTransferProtocolURL:Uniformresourcelocator在开发期间确实经常要进行更改,必须用特殊的软件跟踪更改。这种软件称为源代码控制(或版本控制)系统,它们记录对应用程序所做的每次修订。源代码控制系统允许对比修订、在文件的不同版本之间切换以及把修订收集在一个版本中。目前有许多专有和开放源码的源代码控制系统,尽管各个系统的特性、模式和最佳实践之间存在差异,但目标是相同的:审查谁在什么时候做了什么。流行的商业源代码控制软件包括Perforce和AccuRev;比较先进的开放源码源代码控制软件包括Subversion、Arch、Mercurial、Git和Bazaar(见参考资料中的链接)。在开放源码软件中,Bazaar很引人注目,因为UbuntuLinux®发行版的开发采用了它,Ubuntu是一个包含数千个组件的大型软件项目。Bazaar之所以很特殊还因为它实际上可以适应任何团队的工作模式。例如,一些开发团队喜欢集中,他们把所有更改收集并应用于一个存储库(Subversion是集中式的系统)。其他团队喜欢分散,团队中的每个开发人员有独立的存储库,可以像主存储库一样共享它们。在这种方案中,可以把一个全体共同拥有的存储库指定为用于集成的“中心”,但是它与其他存储库的差异只在于约定(Git是分散的系统)。另一种流行的工作风格是指定一个开发人员作为“看门人”,只有他有权修改权威性存储库。更改都提交给看门人,他对更改进行组合、审查和批准并应用于主存储库。Bazaar的灵活性非常强,可以适应所有这些工作风格。与Subversion一样,Bazaar可以与中心存储库进行同步。与Git一样,可以在本地处理工作,不连接任何服务器。Bazaar还有其他许多出色的特性,比如用于与其他软件工具集成的API、把Bazaar与Git和Subversion等系统集成起来的插件以及简单的分支编号方案(可以直接反映每个分支的衍生关系)。另外,可以非常快速地采用Bazaar,这使它成为控制shell“点”文件、文档和系统配置文件的版本的理想选择。Bazaar的文档也很出色—清晰、简洁且实用。Bazaar入门Bazaar适用于所有主流操作系统。如果愿意从头构建Bazaar,可以从Bazaar的主页下载源代码,也可以下载适当的二进制代码(见参考资料中的链接)。Bazaar由一组命令行实用程序组成,但是如果您喜欢鼠标操作,也可以选用Bazaar社区提供的多种图形化实用程序。可以先通过图形化工具快速地熟悉Bazaar,然后根据需要改用命令行工具。如果使用UNIX®或Linux系统,您的发行版很可能提供预先构建的Bazaar包—包名通常为缩写bzr;与Bazaar相关的包使用这个缩写作为前缀。例如,如果使用Ubuntu或从Debian衍生出的任何Linux版本,那么可以使用AdvancedPackagingTool(APT)快速地找到并安装Bazaar软件。使用apt-cache搜索bzr,见清单1。清单1.在APT存储库中寻找与Bazaar相关的所有工具$apt-cachesearchbzrbzrtools-Collectionoftoolsforbzrbzr-builder-constructabzrbranchfromarecipebzr-cvsps-import-CVStoBazaarimporterbzr-email-NotificationemailpluginforBazaarbzr-fastimport-Fast-import/fast-exportpluginforBazaarbzr-git-BazaarpluginprovidingGitintegrationbzr-gtk-providesgraphicalinterfacestoBazaar(bzr)versioncontrolbzr-loom-FocusedpatchpluginsupportforBazaarbzr-pqm-bzrplugintosubmitanemailtoaPatchQueueManagerbzr-rebase-RebasepluginforBazaarbzr-search-searchpluginforBazaarbzr-stats-statisticspluginforBazaarbzr-svn-BazaarpluginprovidingSubversionintegrationbzr-upload-Bazaarpluginforuploadingtowebservers...bzr-easytousedistributedversioncontrolsystem#Installthecorebzrpackage$apt-getinstallbzr后一个shell命令下载并安装核心Bazaar组件。如果您的操作系统没有提供Bazaar,也很容易从头构建它,尤其是在UNIX系统上。首先,下载Bazaar源代码压缩文件并把它解压到一个本地临时目录中。接下来,确认系统有Python2.5或更高版本以及cElementTree、paramiko和Pyrex模块。有了源代码和这些模块之后,输入以下命令安装Bazaar:pythonsetup.pyinstall安装过程把Bazaar添加到/usr/local/bin中。如果希望把这个软件安装在其他地方,那么使用--home选项并指定目录的完整路径名,比如pythonsetup.pyinstall--home$HOME:$wget通过bzr实用程序控制Bazaar。输入bzrhelp就会列出最常用的命令,见清单2。如果希望获得某个命令的帮助信息,那么输入bzrhelpcommand,其中的command是命令名,比如bzrhelpinit。清单2.可用的Bazaar命令$bzrhelpBazaar--afreedistributedversion-controltool:bzrinitmakesthisdirectoryaversionedbranchbzrbranchmakeacopyofanotherbranchbzraddmakefilesordirectoriesversionedbzrignoreignoreafileorpatternbzrmvmoveorrenameaversionedfilebzrstatussummarizechangesinworkingcopybzrdiffshowdetaileddiffsbzrmergepullinchangesfromanotherbranchbzrcommitsavesomeorallchangesbzrsendsendchangesviaemailbzrlogshowhistoryofchangesbzrcheckvalidatestoragebzrhelpinitmorehelpone.g.initcommandbzrhelpcommandslistallcommandsbzrhelptopicslistallhelptopicsBazaar命令的序列称为诀窍(recipe),在线帮助提供许多诀窍,以此帮助用户快速掌握Bazaar的用法和传授最佳实践。例如,bzrhelpinit的内容中提供一个把任何目录转换为Bazaar存储库的诀窍,见清单3。清单3.把目录转换为Bazaar存储库的诀窍$cd~/project$bzrinit$bzradd.$bzrstatus$bzrcommit-mimportedproject该诀窍有五个步骤。要想按照它执行操作,首先把project目录改为您希望进行源代码控制的目录。接下来,运行bzrinit在当前目录中添加子目录.bzr,这个目录用来包含存储库的帐目元数据。bzradd.命令递归地把“点”目录(当前目录)的内容添加到存储库管理的文件清单中。但是,它不创建当前文件状态的快照。bzrcommit记录存储库中所有文件的状态并添加简短的注释。可以通过-m选项的参数提供注释(一定要使用引号以保证文本完整不变),也可以忽略此选项并在您喜欢的文本编辑器中创建说明。bzrstatus报告什么将要添加到存储库中、什么会改变、什么会被编辑等等。回页首核心概念Bazaar与其他源代码控制系统有许多共同点,但是它的实现不一样,而且利用了您已经熟悉的一些机制(比如SecureShell(SSH)和URL)。Bazaar管理修订,可以分别通过分叉和合并创建和收集分支。下面是Bazaar中的一些关键概念:修订(revision)是对一个或多个文件所做的更改的集合。可以通过修订修复bug或实现新特性。每个修订有惟一的ID(稍后进一步讨论ID)、一个提交者(committer)以及零个或更多个作者(author)。提交者是记录这个修订的开发人员,而作者是对这个修订有贡献的开发人员。图1显示一个修订。图1.一个Bazaar修订通常情况下,每个修订有一个前身,即父修订。因此,可以把开发过程看作由修订组成的链条,每个修订基于其父修订中包含的更改。图2说明这种模式。图2.开发过程被看作一系列修订但是,开发过程很少如此有秩序,尤其是在许多开发人员同时工作的情况下。一个修订也可以有多个前身。在这种情况下,修订代表一次合并(见图3)。图3.开发线路的组合形成合并,即有多个父修订的修订正如前面提到的,修订ID直接反映修订的衍生关系。修订从1开始顺序编号,每当开发链出现分叉(即分支)时添加后缀。例如,在图3中,修订2分出两个分支:2.1和2.2。分支2.1中的第一个修订是2.1.1;同一分支中的第二个修订是2.1.2,以此类推。当合并两个或更多分支时,删除后缀,恢复原来的编号方案。修订3是合并两个分支的结果。图4显示一个图形化工具,它使用与图3非常相似的方式显示Bazaar历史。Bazaar的修订编号方案比Git等系统更有意义、更简洁,Git使用很长的意义不明的MD5散列值作为惟一标识符。图4.图形化工具显示Bazaar历史分支(branch)是末端修订(tiprevision)的指针,末端修订是在同一衍生链中没有后续修订的修订。在图3中,修订3是分支,因为它是最后一个修订。另外,修订2.1.2和2.2.2也是分支,因为它们分别是2.1和2.2衍生链中的最后一个修订。Bazaar的优点之一是它重用了大家熟悉的现有模式。分支仅仅是文件夹。可以在Bazaar中找到其他符合常识的特性。例如,如果使用Bugzilla跟踪bug,可以通过--fixes选项把修订标注为bug补丁。回页首执行典型的任务在一般情况下,Bazaar管理完整的文件目录。但是,如果希望从
本文标题:对话-UNIX:Bazaar
链接地址:https://www.777doc.com/doc-4630075 .html