[有问有答] 如何用 git 来管理你的打包工作
Q: 我看到很多包的 debian/control 里面有 Vcs-Git 和 Vcs-Browser 这样的字段, 这个是什么意思?
A: Vcs 的全称是 Version Control System, 即版本控制系统, 使用这两个字段表明打包工作使用了 Git 来协助管理的, 比如 chmsee 的 debian/control 就有如下的两行:
Vcs-Browser: http://git.debian.org/?p=chinese/chmsee.git
Vcs-Git: git://git.debian.org/git/chinese/chmsee.git
这个表示, 如果你要在线查看打包的情况, 那么就直接访问 http://git.debian.org/?p=chinese/chmsee.git
如果你要下载他的打包工作, 那么就运行 git clone git://git.debian.org/git/chinese/chmsee.git
使用版本管理来协助打包是有几个好处的
- 首先是常规版本管理带来的好处, 比如误删了文件可以马上恢复, 在多个机器上工作时可以很方便地同步, 一个复杂的工作切成多步后会更加清晰, 出现错误后能方便追踪
- 另外就是方便其他开发人员为你提交补丁, 他的补丁可以直接基于你最新的工作, 而不是基于你发布出去的那个版本, 这样能减少你合并补丁时的工作量
- 现在 debian 的包管理工作也在逐步演化为一组人管理一组包, 这样的好处是单个人由于某些原因离开 Debian 时,他的包不至于荒废(看着身边的朋友一个个转投 Apple 的怀抱, 我真得很伤心), 而一组人一起管理包时,版本管理系统就成为必须了
下面我就用 chmsee 来演示一下如何把一个包转为 git 管理
- 你要安装一些 git 工具包: sudo apt-get install devscripts git-buildpackage gitk git-gui
- 找一个空目录, 然后用如下的命令下载 chmsee 的源码包: dget http://ftp.debian.org/debian/pool/main/c/chmsee/chmsee_1.1.0-1.dsc (如果年代久远, 这个 URL 不再可用, 请到QA页面查找新链接)
- 运行 git import-dsc chmsee_1.1.0-1.dsc, 这时会创建出一个新目录: chmsee
- 进入 chmsee 目录, 运行 gitk --all, 可以看到已经有两个分支(master 和 upstream), 和两个 tag (upstream/1.1.0 和 debian/1.1.0-1)
- 运行 debuild -i.git 编译
日常操作: 发布新版本:
- 下载新版本, 比如 chmsee-1.1.1.tar.gz
- 在 chmsee 目录运行 git import-orig ../chmsee-1.1.1.tar.gz
- 运行 dch -v 1.1.1-1, 加入一行 new upstream release, 保存
- 运行 git add debian/changelog
- 运行 debcommit
- 运行 debuild -i.git 编译
如果你对 git 的操作本身已经非常熟悉, 那么 git-buildpackage 上手也没有什么难度。如果你对 svn 更拿手, 那么可以考虑使用 svn-buildpackage.