6.5 KiB
Maintainer documentation for initramfs-tools
[[TOC]]
NOTE: The most recent version of this document is available at docs/maintainer-notes.md in the the git repository or online at salsa.debian.org.
1. Definitions
Name | Meaning |
---|---|
$mailaddress |
mailaddress of the user |
$username |
name of the Salsa account |
$version |
version string |
$yourname |
your fullname |
2. Preparations
-
Install required software:
# apt-get install git git-buildpackage dpkg-dev
-
Set environment variables (e.g. through your ~/.bashrc or ~/.zshrc) for devscripts (gbp dch):
export DEBEMAIL=$mailaddress export DEBFULLNAME=$yourname
-
Set user name and email address for git (drop the --global option to use configuration per-repo basis):
% git config --global user.name "$yourname" % git config --global user.email "$mailaddress"
-
Checkout repository (anonymous):
% git clone https://salsa.debian.org/kernel-team/initramfs-tools.git % cd initramfs-tools
-
Checkout repository (with developer access):
% git clone ssh://git@salsa.debian.org/kernel-team/initramfs-tools.git % cd initramfs-tools
3. Workflow for daily work
3.1 Implement new features
-
Checkout new branch and switch to it:
% git checkout -b $username/short-descr-of-new-feature
-
Hack and commit work:
% $EDITOR $somefile % git add $somefile % git commit -s
NOTE: Use 'Closes: #BUGID' for closing a bugreport and 'Thanks: Fullname <mailaddress>' for giving credits in your commit message. gbp dch will use this information for generating the changelog using the --meta option later on.
-
Finally push your branch to Salsa:
% git push origin $username/short-descr-of-new-feature
3.2 Merge branches
-
Switch to the branch you want to merge:
% git checkout $username/new-feature
-
Rebase to master:
% git rebase master
-
Switch to master branch and merge:
% git checkout master % git merge $username/new-feature
-
Push:
% git push
-
After branch is merged delete branch on server and locally:
% git push origin :$username/short-descr-of-new-feature % git branch -d $username/short-descr-of-new-feature
-
If a branch is removed from the server it will stay locally. You can get of any stale remote branches locally by executing:
% git remote prune origin
3.3 Test specific branch
-
Checkout a specific branch iff branch is not already present locally:
% git checkout -b somename/short-descr-of-new-feature origin/somename/short-descr-of-new-feature
-
Checkout a specific branch iff branch is already present locally:
% git checkout -b somename/short-descr-of-new-feature
-
Adjust debian/changelog accordingly:
% gbp dch --debian-branch="$(git branch | awk -F\*\ '/^* / { print $2}' )" \ --since="v$(dpkg-parsechangelog | awk '/^Version:/ {print $2}')" -S --id-length=7 --meta --multimaint-merge
-
Build package:
% gbp buildpackage --git-ignore-new --git-debian-branch="$(git branch | awk -F\*\ '/^* / { print $2}' )" --post-clean
3.4 Build snapshot version
-
Adjust debian/changelog accordingly:
% gbp dch --debian-branch="$(git branch | awk -F\*\ '/^* / { print $2}' )" \ --since="v$(dpkg-parsechangelog | awk '/^Version:/ {print $2}')" -S --id-length=7 --meta --multimaint-merge
-
Build package:
% gbp buildpackage --git-debian-branch="$(git branch | awk -F\*\ '/^* / { print $2}' )" --post-clean [-us -uc]
4. Contribute
-
Create patch:
% git format-patch -s -p origin/master
-
Send patch file(s) to maintainers via mail (requires Debian package git-email):
% git send-email --to=initramfs-tools@packages.debian.org $PATCHFILE[S]
-
The development mailinglists are debian-kernel@lists.debian.org and initramfs@vger.kernel.org. Discussion of features, bugs and patches are more than welcome on one of these lists.
5. Release new version
-
Creating changelog:
% gbp dch --debian-branch master --release --since HASH
or more dynamically:
% gbp dch --meta --release --since v$(dpkg-parsechangelog | awk '/^Version:/ {print $2}') --debian-branch="$(git branch | awk -F\*\ '/^* / { print $2}' )" --id-length=7 --meta --multimaint-merge
NOTE: we do not use history based sorting for the changelog entries but sort them by author.
-
Releasing:
% git commit -a -s -m "Releasing version $version."
-
Tagging:
% git tag -s v"$version" -m "release $version"
-
Pushing:
% git push % git push --tags
-
Build in chroot and upload to ftp-master.
-
Send mail announcing the new initramfs-tools version with subject "initramfs-tools $VERSION release" to initramfs@vger.kernel.org, debian-kernel@lists.debian.org + kernel-team@lists.ubuntu.com - including a shortlog (generated through "git shortlog $TAG..").
6. Resources
- initramfs-tools git web interface
- initramfs @ debian-wiki
- bugreports
- initramfs-tools @ tracker
- popcon graph
- bugreports @ ubuntu
- qa page @ ubuntu
7. Credits
- Thanks to Daniel Baumann for his "Debian Packaging with Git" which inspired this document.
8. License
- This document is licensed under GPL v2 or any later version.
-- Michael Prokop <mika@debian.org>, Ben Hutchings <benh@debian.org>