Tracking the linux-next branch

We have currently our own branch to create patches for linux. These patches are send to a sub-system maintainer which integrates them into his own git repository. New patches from other people usually went to linux-next. We have to create patches on top of linux-next unless they are only small bug fixes directly for 2.6.

Other people will also create patches which may affect our code and thus we have to import them too in our codebase. In a perfect world these people will CC: us, but we aren’t in a perfect world and we must ensure by our self that we get informed about them. The first approach was to check linux-next before we try to rebase our patches on top of linux-next. This created a large gap until we noticed them or we forgot them at all.

The new approach is to create a mirror of linux-next on our server, install a small script which parses the commits in post-receive and send mails when there are changes in fails inside net/batman-adv. This script is stolen from https://git.open-mesh.org/batman-adv.git.

Initial setup

su batman -
cd $HOME
git clone --mirror git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
echo "LinuxNextTracking" >  linux-next.git/description
cp /srv/git/batman-adv/hooks/post-receive linux-next.git/hooks/manual-hook
chmod +x linux-next.git/hooks/manual-hook
cat << 'EOF' > linux-next.git/sync-git
#! /bin/sh
export MY_REV="refs/heads/main"
export GIT_DIR=/home/batman/linux-next.git
cd "$GIT_DIR"
cd /home/batman/linux-next.git
oldrev="@git rev-parse $MY_REV@"
git fetch
newref="@git rev-parse main@"
if [ "$oldrev" != "$newref" ]; then
    echo "$oldrev" "$newref" "$MY_REV" | ./hooks/manual-hook
fi
EOF
chmod +x linux-next.git/sync-git

The script has to be modified a little bit to get it working after refs/heads/main was modified. Just exchange

git rev-parse --not --branches | grep -v $(git rev-parse $refname) | git rev-list --reverse --stdin $oldrev..$newrev -- net/batman-adv

with

git rev-list --reverse $oldrev..$newrev -- net/batman-adv

The next step is to add it to batman crontab

15 0   *   *   *     /home/batman/linux-next.git/sync-git >& /dev/null

To get it really to send something we have to add the mail information to the hooks section of linux-next.git/config

[hooks]
    mailinglist = my-address@foobar.com
    envelopesender = postmaster@open-mesh.org
    emailprefix = "[linux-next] "

Now the owner of my-address@foobar.com will receive our and foreign patches which touches net/batman-adv in linux-next… each day at 0:15 (or at least once a day).