20.3.2 Quilt

    Quilt[1]是一款补丁列表管理软件,用Shell语言开发,安装也很简单,在Debian/Ubuntu上直接用下面的命令即可安装:


    $sudo aptitude install quilt

    Quilt约定俗成将补丁集放在项目根目录下的子目录patches中,否则需要通过环境变量QUILT_PATCHES对路径进行设置。为了减少麻烦,在上面用stg export导出补丁的时候就导出到了patches目录下。

    简单说一下Quilt的使用,会发现真的和StGit很像,实际上是先有的Quilt,后有的StGit。Quilt使用过程如下。

    (1)重置到三个提交前的版本,否则应用补丁的时候会失败。不要忘了删除src/locale目录。


    $git reset—hard HEAD~3 $rm-rf src/locale/

    (2)显示补丁列表。


    $quilt series 01-fix-typo-help-to-help 02-add-i18n-support 03-translate-for-chinese

    (3)应用一个补丁。


    $quilt push Applying patch 01-fix-typo-help-to-help patching file src/main.c Now at patch 01-fix-typo-help-to-help

    (4)下一个补丁是什么?


    $quilt next 02-add-i18n-support

    (5)应用全部补丁。


    $quilt push-a Applying patch 02-add-i18n-support patching file src/Makefile patching file src/locale/helloworld.pot patching file src/locale/zh_CN/LC_MESSAGES/helloworld.po patching file src/main.c Applying patch 03-translate-for-chinese patching file src/locale/zh_CN/LC_MESSAGES/helloworld.po Now at patch 03-translate-for-chinese

    Quilt的功能还有很多,请参照Quilt的在线帮助,恕不一一举例。

    Git提供了一个名为git quiltimport的命令,可以非常方便地将Quilt格式的补丁集转化为一个一个的Git提交,是前面介绍的git am命令的一个补充。例如要将位于patches目录下的Quilt补丁集应用到版本库中,可以执行下面的命令:


    $git quiltimport

    [1]http://savannah.nongnu.org/projects/quilt