導入
sudo apt install quilt -y
alias dquilt="quilt --quiltrc=${HOME}/.quiltrc-dpkg"
complete -F _longopt -o filenames dquilt
_longoptはcatと同じ補完関数です。
設定ファイルの用意
$HOME/.quiltrc-dpkg
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
いまいち用途がわかってませんがコミットコメントみたいなものですかね?
changelogに変更内容を残す
現在のバージョンに変更を追加する場合
dch -i
新たなバージョンとして変更を追加する場合
dch -v <version>-<revision>
debian/changelogに変更が追加されます。
seriesファイルに書かれた順に従ってpatchを1つはずす
dquilt pop
foo.patchが外れ、編集前の状態に戻ったはずです。
seriesファイルに書かれた順に従ってpatchを1つあてる
dquilt push
foo.patchがあたり、編集後の状態に戻ったはずです。
全てのパッチファイルをあてる/はずす
dquilt push -a
dquilt pop -a
現在までの差分を表示
dquilt diff