dpkg-mergechangelogs
3-way merge of debian/changelog files
Synopsis
dpkg-mergechangelogs
[option...] old new-a new-b [out]
add an example, a script, a trick and tips
examples
no example yet ...
... Feel free to add your own example above to help other Linux-lovers !
description
This program
will use the 3 provided versions of the Debian changelog to
generate a merged changelog file. The resulting changelog is
stored in the file out or output to the standard
output if that parameter is not given.
Each entry is
identified by its version number and they are assumed to be
not conflicting, they are simply merged in the right order
(by decreasing version number). When
--merge-prereleases is used, the
part of the version number after the last tilde is dropped
so that 1.0-1~exp1 and 1.0-1~exp5 are considered
to be the same entry. When the same version is available in
both new-a and new-b, a standard line-based
3-way merge is attempted (provided that the module
Algorithm::Merge is available — it’s part of the
package libalgorithm-merge-perl —
otherwise you get a global conflict on the content of the
entry).
options
--merge-prereleases,
-m
Drop the part after the last
tilde in the version number when doing version comparison to
identify if two entries are supposed to be the same or
not.
This is useful
when you keep using the same changelog entry but you
increase its version number regularly. For instance, you
might have 2.3-1~exp1, 2.3-1~exp2, ... until the
official release 2.3-1 and they are all the same
changelog entry that has evolved over time.
--help
Show the usage message and exit.
--version
Show the version and exit.
integration with git
If you want to use this program to merge Debian changelog files
in a git repository, you have first to register a new merge
driver in .git/config or ~/.gitconfig:
[merge "dpkg-mergechangelogs"]
name = debian/changelog merge driver
driver = dpkg-mergechangelogs -m %O %A %B %A
Then you have to setup the merge attribute for the
debian/changelog file either in .gitattributes in the
repository itself, or in .git/info/attributes:
debian/changelog merge=dpkg-mergechangelogs
limitations
Anything that is not parsed by Dpkg::Changelog is lost during the
merge. This might include stuff like vim modelines, comments
which were not supposed to be there, etc.