[Kde-scm-interest] Git and the needs of KDE PIM

Thomas McGuire mcguire at kde.org
Sat Jan 16 18:41:46 CET 2010


On Tuesday 12 January 2010 20:54:14 Stephen Kelly wrote:
> At the recent kde pim osnabrueck meeting we discussed the upcoming switch
> to git and how it affects kdepim.
> [..] 
> If you need to know more about this stuff, hopefully Thomas McGuire can
> answer any questions.

let me provide some details about what we do in KDEPIM regarding merges and 
what we need from Git.
First of all a disclaimer: I know next to nothing about Git, so I don't know 
what it already provides.

As Steve said, we have quite a lot of branches, and we are required to merge 
all commits from the enterprise branches of KDEPIM back into trunk at some 
point. That is important, no commit should get lost.

Currently, we use a tool called "svnmerge.py" for this task. It can give you a 
detailed list of commits that are currently not merged. You can then decide to 
either merge a commit or to block it. Commits are blocked when they are not 
needed at all in the other branch, like version number changes or workarounds 
for bugs that are long fixed in a better way in the branch.

The good thing about svnmerge.py is that it doesn't show blocked commits again 
in the list of unmerged commits, only the commits that you really still have 
to deal with.

So what we need from Git is:
- A tool/command that lists all unmerged commits from one branch to the other
- A tool/command that lets you block/remove commits from that list
- And of course a way to actually merge the commits, but I heard that Git is 
  much much better than SVN in that regard

Someone mentioned that feature branches should do the job, but I don't think 
this will work. Much of the work we do in the branches are simple bugfixes, so 
we wouldn't create a branch for each single bugfix, like you would do for new 
Also, that probably just moves the problem around: If I created a branch for 
each bugfix, I would then need a list of _branches_ that are not merged yet, 
together with a way to block those.

As an example of the list of unmerged commits that svnmerge.py creates, see 
http://www.kdab.com/~thomas/avail/avail_kdepim-trunk_e4_lastest. That shows 
all commits I need to merge from the enterprise4 branch to trunk.
As in example in this list, see commit r1075215 ("Update Newslog.txt"), that 
is a commit which will get blocked, since the changelog is only specific to 
the enterprise4 branch and not needed in trunk.
Once the commit is blocked, it will not show up in the avail list again.

For even more info, see http://techbase.kde.org/Development/Tools/svnmerge.py.

I hope I could shed a bit of light on the KDEPIM side of things.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-scm-interest/attachments/20100116/5ab3c9b2/attachment.sig 

More information about the Kde-scm-interest mailing list