書式
dpkg-mergechangelogs [option...] old new-a new-b [out]説明
このプログラムは、3 つの Debian changelog のバージョンから、マージされたchangelog ファイルを生成する。生成された changelog は out ファイルに保存されるが、パラメータが指定されなかった場合は 標準出力に出力される。
各エントリはバージョン番号によって区別され、競合が発生していないことが前提となる。これらは右から順番に (バージョン番号を減らすことで) 単純にマージされる。--merge-prereleases が指定された場合、バージョン番号の最後のチルダより後の部分が除外されるため、1.0-1~exp1 と 1.0-1~exp5 は同じエントリだと見なされる。new-a と new-b とに同じバージョンがある場合、標準的な行ベースの 3-way マージが試行される (Algorithm::Merge モジュールが利用可能な場合。--- これは、libalgorithm-merge-perl パッケージの一部である。 --- 利用できない場合は、該当のエントリにおいて競合が発生する)。
オプション
- -m, --merge-prereleases
-
2 つのエントリが同一と見なされるかどうかを確認するバージョン比較の際に、バージョン番号の最後のチルダより後の部分を除外する。
これは、バージョン番号を常に増加させているものの、同一の changelog エントリの使用を継続したい場合に有用である。一例として、2.3-1~exp1, 2.3-1~exp2 というバージョンが公式なリリースである 2.3-1 まで続くような場合に、これらを時系列順に並べて同一の changelog エントリにしたい場合などが挙げられる。
- --help
- 利用方法を表示して終了する。
- --version
- バージョン情報を表示して終了する。
制限事項
Dpkg::Changelog で解析できない内容は、マージの際に消失する。これには vim のモードライン、存在しているとは見なされないコメントなどが挙げられる。
GIT との連携
このプログラムを git リポジトリにある Debian changelog ファイルのマージに用いる場合は、最初に .git/config もしくは ~/.gitconfig に新しいマージドライバを登録しておく必要がある:
[merge "dpkg-mergechangelogs"]
name = debian/changelog merge driver
driver = dpkg-mergechangelogs -m %O %A %B %A
ついで、debian/changelog ファイルの merge 属性をリポジトリ内の .gitattributes もしくは .git/info/attributes 中に設定する必要がある:
debian/changelog merge=dpkg-mergechangelogs