froglogic / All / Committing into multiple KDE branches

Committing into multiple KDE branches

A while ago, KDE branched the 4.0.x releases into their own subversion branch directory. This reminded me that I’ve been using a little script for a while which comes in quite handy when you want to commit a patch to multiple branches.

The script is called ‘ilc’ (which originally stood for ‘integrate last change’ but it actually integrates any revision you specify). It’s a little Bash script which expects you to have separate checkouts for the different branches (so it doesn’t integrate the change “in place”).

For instance, in my directory layout, there’s the KDE trunk checkout in ~/src/kde/trunk and the KDE 4.0.x branch checkout in ~/src/kde/40. I usually work in the trunk branch, but every now and then I want to backport something (usually a bugfix) to the 4.0.x branch. So after hacking away, I eventually do this:


frerich@helios:~/src/kde/trunk/kdenetwork/knewsticker$ svn ci
Sending settingsdialog.cpp
Transmitting file data .
Committed revision 765024.
frerich@helios:~/src/kde/trunk/kdenetwork/knewsticker$

So SVN gave me the number of the revision I just committed. Using the ilc script, all I need to do to integrate this change into the 4.0.x branch is


frerich@helios:~/src/kde/trunk/kdenetwork/knewsticker$ ilc 765024 ~/src/kde/40

The script will make sure that the affected files in the 4.0.x checkout are up to date, then apply the patch, and finally it’ll let me inspect the patch it did, abort the merge, or commit. When committing, it’ll use the original log message plus a prefix like “automatically merged revision 765024:” so that I can lateron still see that this commit was actually a backport of something else.

Tags

2 Comments

Nice! Small nitpick: a script can’t change the pwd of the calling shell (unless you run your script with “. ./ilc” instead of “./ilc”), thus it’s not necessary to call “cd ${src_dir}” before calling “exit”.

Nice script! FreeBSD uses the term MFC [1] (Merged From Current) in their commit messages when it’s a merge from their bleeding edge into one of their release branches. Maybe KDE should use MFT (Merged From Trunk)? Just thought it’s a little more compact than “automatically merged revision” 😉

[1] e.g. http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/arcmsr/arcmsr.c?only_with_tag=RELENG_6

Leave a Reply

Your email address will not be published. Required fields are marked *

Copy link
Powered by Social Snap