Preliminary steps¶
Prepare for the merging procedure by cloning the required repository and filing a merge bug.
Merging series
The article series provides guidance on performing package merges.
- Process overview:
Decide on a merge candidate¶
Check if a newer version is available from Debian. Use the rmadison(1) tool:
$ rmadison <package>
$ rmadison -u debian <package>
Example:
$ rmadison at
at | 3.1.13-1ubuntu1 | precise | source, amd64, armel, armhf, i386, powerpc
at | 3.1.14-1ubuntu1 | trusty | source, amd64, arm64, armhf, i386, powerpc, ppc64el
at | 3.1.18-2ubuntu1 | xenial | source, amd64, arm64, armhf, i386, powerpc, ppc64el, s390x
at | 3.1.20-3.1ubuntu2 | bionic | source, amd64, arm64, armhf, i386, ppc64el, s390x
at | 3.1.20-3.1ubuntu2 | cosmic | source, amd64, arm64, armhf, i386, ppc64el, s390x
at | 3.1.20-3.1ubuntu2 | disco | source, amd64, arm64, armhf, i386, ppc64el, s390x
$ rmadison -u debian at
at | 3.1.13-2+deb7u1 | oldoldstable | source, amd64, armel, armhf, i386, ia64, kfreebsd-amd64, kfreebsd-i386, mips, mipsel, powerpc, s390, s390x, sparc
at | 3.1.16-1 | oldstable | source, amd64, arm64, armel, armhf, i386, mips, mipsel, powerpc, ppc64el, s390x
at | 3.1.16-1 | oldstable-kfreebsd | source, kfreebsd-amd64, kfreebsd-i386
at | 3.1.20-3 | stable | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
at | 3.1.23-1 | testing | source, amd64, arm64, armel, armhf, i386, mips, mips64el, mipsel, ppc64el, s390x
at | 3.1.23-1 | unstable | source, amd64, arm64, armel, armhf, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, mips, mips64el, mipsel, ppc64el, s390x
at | 3.1.23-1 | unstable-debug | source
You’re be merging from Debian unstable
, which in this example is 3.1.23-1
.
Check existing bug entries¶
Check for any low-hanging fruit in the Debian or Ubuntu bug list that can be wrapped into this merge.
Ubuntu bug tracker:
https://bugs.launchpad.net/ubuntu/+source/<package>
Debian bug tracker:
https://tracker.debian.org/pkg/<package>
If there are bugs you’d like to fix, make a new SRU-style commit at the end of the merge process and put them together in the same merge proposal. This process is described in the Adding new changes section.
Make a bug report for the merge¶
Many regular Ubuntu team merges are pre-planned and likely already exist as bugs, or can be found in the team merge schedule.
Merges can also be picked up from Merge-o-Matic, weekly Merge Opportunities Reports (e.g. the Ubuntu Server report), or through awareness being raised for other reasons.
If there is no obvious pre-created bug yet, check if there is an existing merge request bug entry in Launchpad. If you don’t find one, create one to avoid duplicate efforts and to allow coordination.
To do so, go to the package’s Launchpad page:
https://bugs.launchpad.net/ubuntu/+source/<package>
From there, create a new bug report requesting a merge.
Example bug:
- URL:
- Summary:
“Please merge 3.1.23-1 into noble”
- Description:
“tracking bug”
- Result:
Set the bug status to “in-progress” and assign it to yourself.
To let people who only use Merge-o-Matic know, go to the summary page (for example, universe), and if the package is listed there, leave a comment linking to the bug.
This way, those not studying the LP bugs discover more easily that there is already a bug filed for that merge. To do so:
Click in the Comment column on the invisible text entry field.
Leave a comment like
bug #123456
and press Enter.The page updates and links to your bug.
Important
Save the bug report number, because you’ll be using it throughout the merge process.
Get the package repository¶
Cloning the repository is the start of all further interactions. If you have already cloned the repository, update it to ensure you have the newest content before taking any further action.
Clone the package repository¶
$ git ubuntu clone <package> [<package>-gu]
Example:
$ git ubuntu clone at at-gu
It’s a good idea to append some git-ubuntu
specific label (like -gu
) to distinguish it from clones of Debian or upstream Git repositories (which tend to want to clone as the same name).
Update the package repository¶
Since this is just Git, the best way to update the git-ubuntu
-based content (and any other remotes) is to update them all before going into the merge process.
$ git fetch --all