被子备忘录

引入

sudo apt install quilt -y
alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
complete -F _longopt -o filenames dquilt

_longopt的补全函数与cat相同。

准备配置文件

d=. ; while [ ! -d $d/debian -a `readlink -e $d` != / ]; do d=$d/..; done
if [ -d $d/debian ] && [ -z $QUILT_PATCHES ]; then
    # if in Debian packaging tree with unset $QUILT_PATCHES
    QUILT_PATCHES="debian/patches"
    QUILT_PATCH_OPTS="--reject-format=unified"
    QUILT_DIFF_ARGS="-p ab --no-timestamps --no-index --color=auto"
    QUILT_REFRESH_ARGS="-p ab --no-timestamps --no-index"
    QUILT_COLORS="diff_hdr=1;32:diff_add=1;34:diff_rem=1;31:diff_hunk=1;33:diff_ctx=35:diff_cctx=33"
    if ! [ -d $d/debian/patches ]; then mkdir $d/debian/patches; fi
fi

准备放置补丁的目录。

mkdir debian/patches

注册补丁文件

我們先創建一個空的補丁文件。

dquilt new foo.patch

补丁文件将被注册在名为debian/patches/series的文件中。

添加要编辑的文件

dquilt add foo.bar

编辑

vim foo.bar

还有一个同时进行add和vim操作的edit子命令存在。

将差异映射到补丁文件中。

dquilt refresh

差分将保存在debian/patches/foo.patch中。

给补丁文件(差分文件)加上头部。

dquilt header -e

我有点不懂它的用途,但是是类似于提交评论的东西吗?

在更改日志中记录更改内容

dch -i
dch -v <version>-<revision>

Debian/changelog将添加更改内容。

根据系列文件的顺序,取消一个修补程序。

dquilt pop

foo.patch已被移除,应该恢复到编辑之前的状态。

按照系列文件中的顺序逐一应用补丁

dquilt push

foo.patch被应用了,应该已经恢复到编辑后的状态了。

应用/移除所有补丁文件。

dquilt push -a
dquilt pop -a

显示到目前为止的差异

dquilt diff