initramfs-tools/docs/maintainer-notes.md

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

  1. Install required software:

     # apt-get install git git-buildpackage dpkg-dev
    
  2. Set environment variables (e.g. through your ~/.bashrc or ~/.zshrc) for devscripts (gbp dch):

     export DEBEMAIL=$mailaddress
     export DEBFULLNAME=$yourname
    
  3. 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"
    
  4. Checkout repository (anonymous):

     % git clone https://salsa.debian.org/kernel-team/initramfs-tools.git
     % cd initramfs-tools
    
  5. 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

  1. Checkout new branch and switch to it:

     % git checkout -b $username/short-descr-of-new-feature
    
  2. 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.

  3. Finally push your branch to Salsa:

     % git push origin $username/short-descr-of-new-feature
    

3.2 Merge branches

  1. Switch to the branch you want to merge:

     % git checkout $username/new-feature
    
  2. Rebase to master:

     % git rebase master
    
  3. Switch to master branch and merge:

     % git checkout master
     % git merge $username/new-feature
    
  4. Push:

     % git push
    
  5. 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
    
  6. 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

  1. 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
    
  2. Checkout a specific branch iff branch is already present locally:

     % git checkout -b somename/short-descr-of-new-feature
    
  3. 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
    
  4. Build package:

     % gbp buildpackage --git-ignore-new --git-debian-branch="$(git branch | awk -F\*\  '/^* / { print $2}' )" --post-clean
    

3.4 Build snapshot version

  1. 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
    
  2. Build package:

     % gbp buildpackage --git-debian-branch="$(git branch | awk -F\*\  '/^* / { print $2}' )" --post-clean [-us -uc]
    

4. Contribute

  1. Create patch:

     % git format-patch -s -p origin/master
    
  2. Send patch file(s) to maintainers via mail (requires Debian package git-email):

     % git send-email --to=initramfs-tools@packages.debian.org $PATCHFILE[S]
    
  3. 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

  1. 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.

  2. Releasing:

     % git commit -a -s -m "Releasing version $version."
    
  3. Tagging:

     % git tag -s v"$version" -m "release $version"
    
  4. Pushing:

     % git push
     % git push --tags
    
  5. Build in chroot and upload to ftp-master.

  6. 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

7. Credits

8. License

  • This document is licensed under GPL v2 or any later version.

-- Michael Prokop <mika@debian.org>, Ben Hutchings <benh@debian.org>