免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2566 | 回复: 1
打印 上一主题 下一主题

GNU Arch 使用简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-17 17:30 |只看该作者 |倒序浏览
http://www.bsdlife.org/wiki/index.php/ArchPrimer

文章内容稍微有点旧,但作为简单教程足够了。

论坛徽章:
0
2 [报告]
发表于 2006-06-23 14:25 |只看该作者
Arch 应用示例

http://www.bsdlife.org/wiki/inde ... 8%E7%A4%BA%E4%BE%8B

刚开始的时候,ChmSee 与 GRO 上的其他项目一样,也是使用 GRO 提供的 CVS 作为项目的版本控制系统。但使用了一段时间以后,遇到了一个难以容忍的问题,让我决定放弃 CVS,改用 Arch。

这个问题就是执行任何 CVS 命令都要耗费大量的时间。我们知道,CVS 在客户端的工作目录下不保存任何以前的版本的副本,因此任何查询都需要跟服务器打交道。而其中的 diff 命令是比较耗费系统资源的。也不知是 GRO 的服务器性能比较低,还是特意做了限制,在查询当前工作目录下 chmsee/src 里面做了哪些变更时,使用 cvs -n update 命令竟然要等数十分钟。提交的时候,如果不指定具体的文件,直接使用 cvs ci 也要花很长的时间。

查询当前代码状态,是开发过程中经常要用的功能,但是因为 GRO 上的 cvs 性能问题,严重影响了开发效率。另外,GRO 也无法匿名访问 CVS 仓库,只提供 CVSROOT 的打包下载,这对于非项目成员跟踪项目代码非常不便。

除了 CVS,GRO 还为软件项目提供了主页空间,并让用户通过 sftp 进行维护。这些资源对于使用 Arch 来进行版本控制来说,已经可以满足建立服务器的要求。下面就 ChmSee 项目在 GRO 上使用 Arch 的过程进行说明。

准备

首先,在开发人员的机器上建立 Arch id:

$ tla my-id "Ji YongGang <jungle@soforge.com>"

然后,为 Arch 进行 GnuPG 签名与签名验证设置:

$ mkdir -p -m 700 ~/.arch-params/signing/
$ echo 'gpg --clearsign --use-agent' > ~/.arch-params/signing/=default
$ echo 'tla-gpg-check gpg_command="gpg --verify-files -"' > ~/.arch-params/signing/=default.check


建立 archive

GRO 上面 ChmSee 项目主页的路径是 /groups/chmsee,我的注册名是 jungle,可以用 make-archive 命令在建立 gro.clinux.org 上面建立 archive。

$ tla make-archive -l -s jungle@gro.clinux.org--2006 sftp://jungle@gro.clinux.org/groups/chmsee/archives

命令中的 -l 参数是要求创建 .listing 文件,供以后匿名用户访问使用。-s 参数是说明该 archive 要进行 GPG 签名。archive 名称按照 Arch 文件习惯写成 jungle@gro.clinux.org--2006,其中的 email 地址并不需要是实际的 email 地址。

接下来为 ChmSee 项目设置 category、branch 和 version,category 就设为 chmsee,branch 为 main,version 为 0,组合在一起就是 chmsee--main--0,然后用 archive-setup 命令创建:

$ tla archive-setup jungle@gro.clinux.org--2006/chmsee--main--0

导入 ChmSee 源码

首先将 ChmSee 0.9.6 发布版的源码解压到一个目录 chmsee,然后初始化项目树:

$ cd chmsee
$ tla init-tree jungle@gro.clinux.org--2006/chmsee--main--0

init-tree 命令会将一些项目相关信息放到新建的 {arch} 子目录里面。

接着,添加文件到版本控制系统中:

$ tla inventory -s -B --names | xargs -n 1 tla add-id

具体的添加命令是 add-id,而 inventory 命令是辅助寻找源码文件的工具。

确定所需的文件已经加入,最后使用导入命令:

$ tla import -S -s "import ChmSee 0.9.6"

命令中 -s 后面是导入时附加的信息,-S 是确保 archive-setup 命令已经执行。

建立本地 archive

与 CVS 的方式不同,导入源码之后毋需再导出一个工作目录,开发人员可以直接在上面的 chmsee 进行修改和提交流程。

虽然现在就可以开始工作,但每次提交仍然需要跟 GRO 的服务器通讯,遇到网络不通畅的时候,仍然会影响开发效率。不要忘了 GNU Arch 是分布式版本管理系统,那么分布式于中央式有什么区别,它的优点又在哪里呢?

下面先在本地建立一个 archive:

$ tla make-archive jungle@local--projects /home/jungle/archives

与在 GRO 上建立 archive 的 make-archive 命令不同,这次没有 -s -l 参数,这是由于该 archive 只供单人使用,没有必要签名和发布。

紧接着,将该 arvhive 设为默认:

$ tla my-default-archive jungle@local--projects

同样,也需要使用 archive-setup 命令,因为是要在 0.9.6 基础上进行 0.9.7 版本的开发,所以取名为 chmsee--local--0.9.7:

$ tla archive-setup jungle@local--projects/chmsee--local--0.9.7


准备工作目录

前面的 chmsee 目录是与 GRO 服务器关联的,现在需要一个与本地 archive 关联的开发目录用于日常开发工作。

首先将本地 archive 与 GRO 上的挂钩,也可以看成是把 GRO 服务器上的源码导入本地:

$ tla tag jungle@gro.clinux.org--2006/chmsee--main--0 chmsee--local--0.9.7

上面命令中 tag 的第二个参数中没有指定 archive,tla 就会自动使用默认的 archive。

然后进入开发目录,导出代码:

$ cd ~/projects
$ tla get chmsee--local--0.9.7 chmsee-dev

如果省掉最后的 chmsee-dev,tla 创建的目录名就会是 chmsee--local--0.9.7。


Arch 开发工作流程

在 CVS 下开发,一个好习惯是修改代码之前首先进行 cvs update,将源码仓库里面的最新变更合并到本地。Arch 的工作流程也一样,不同之处是有两个仓库,需要使用 star-merge 命令完成这项工作:

$ cd chmsee-dev
$ tla star-merge jungle@gro.clinux.org--2006/chmsee--main--0

如果是工作在 chmsee 目录,而没有本地 archive,则直接使用 update 命令就行:

$ cd chmsee
$ tla update

代码修改完毕,另一个良好的开发习惯是写 log,对此,Arch 提供了几个工具可以帮助我们轻松的完成这项任务。

首先查看这次有哪些代码做了变更:

$ tla changes

如果想看到具体的修改内容,可以在上面命令后面加上 --diffs 参数。

然后生成 log 信息文件:

$ tla make-log

该命令会有一个 ++log.chmsee 开头的文件生成,用任何一款文本编辑打开,在 Summary: 行后面写入简短的修改说明,在 Keywords: 空行后面书写详细的说明。

也可以在生成 log 的同时打开编辑器,如:

$ vi `tla make-log`

最后,使用 commit 命令提交到本地 archive:

$ tla commit

当本地开发告一段落,可以将它提交到远程服务器上,与其他开发人员共享:

$ cd chmsee
$ tla update
$ tla star-merge jungle@local--projects/chmsee--local--0.9.7
$ tla commit

匿名用户访问源码仓库

前面在 GRO 上建立 archive 时候使用了 -l 参数,这就让匿名用户可以用 http 协议访问该 archive。

首先,需要注册该 archive:

$ tla register-archive http://chmsee.gro.clinux.org/archives

查看注册结果:

$ tla archives

注册成功的情况下,会看到 jungle@gro.clinux.org--2006 出现在列表中。

因为该 archive 使用了 GPG 签名,所以也需要对 Arch 检验进行相关设置:

$ mkdir -p -m 700 ~/.arch-params/signing/
$ echo 'tla-gpg-check gpg_command="gpg --verify-files -"' > ~/.arch-params/signing/=default.check

接着需要导入 ChmSee 开发人员公钥,比如:

$ gpg --keyserver pgp.mit.edu --recv-keys BF73988B

创建一个合适的目录,就可以开始下载源码了:

$ mkdir ~/projects && cd ~/projects
$ tla get jungle@gro.clinux.org--2006/chmsee--main--0 chmsee
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP