Multimedia/Move to Git

From KDE Community Wiki

This page describes the move of kdemultimedia from SVN to Git.

History

Note

This section attempts to briefly describe how we got to the current situation. It's not intended to be an accurate historical account, and probably isn't. Don't place blame on anyone, especially if you rely on the contents of this incomplete text.

Trever Fischer worked on the svn2git conversion rules for kdemultimedia mostly alone since announcing plans in January 2012. Nicolas Alvarez, who helped with other repos and single-handedly converted others, didn't get as involved as he should have, because he was focusing on the migration of kdegames repositories (plus some real-life time-eaters).

On March 28th, Trever announced the move, and did the final conversion and push on April 4th. The next day, several problems were found with the repositories, including files that were entirely missing (causing build failures, the stable branch (KDE/4.8) not having the needed changes to let the repos build standalone, and several history problems.

Eike Hein was soon notified of the problem, and decided to lock the git repositories to prevent new commits done on them. He also sent an email to various mailing lists to notify about the locked repositories.

Since then, there has been slow but reasonably steady work to improve the conversion rules.

Work done

Here's a list of important changes in the rules since the “bad” conversion was done.

  • Reuse common code that was written for past conversions, fixing several issues.
  • Simplify several rules and remove others that weren't needed, for faster conversions.
  • Ignore problematic commits such as r409205, which messed up most branches and tags.
  • Added the old libkcompactdisc history from when it was a part of kscd.
  • Export documentation in version branches.
  • Export several app-specific work branches.
  • Added parentmaps to synthesize branch merges.
  • Nearly rewrote the audiocd-kio rules to catch all the history correctly.

Progress

Repository Status
audiocd-kio Complete!
dragonplayer Complete, no parentmaps needed, nothing else needed unless I'm crazy enough to import the codeine tarballs.
ffmpegthumbs Complete (no parentmaps needed)
juk Complete (or so it seems... juk is a big one, so I'm skeptical)
kmix Really complex stuff in early history, may take a while to get right
kscd Complete
libkcddb Complete
libkcompactdisc Complete
mplayerthumbs Complete (no parentmaps needed)
strigi-analyzers Complete

Feature freeze problem

While the repositories were unusable, there was interesting development done on scratch repositories, implementing MPRIS2 for DragonPlayer and JuK. In order to get into KDE 4.9, this code needs to be in the real repositories before the feature freeze on May 3rd. Therefore the repositories should be done before this date.

I'm not optimist that the KMix rules can be finished by that date. The options would be:

  1. Migrate when it's done, miss the may 3rd deadline. Request a feature freeze exception or live with MPRIS2 not getting into DragonPlayer and Juk for 4.9.
  2. Migrate now with crappy conversion of KMix early history and be stuck with it forever.
  3. Migrate now with crappy conversion of KMix early history, fix it later (would need a force-push).
  4. Migrate everything to git except KMix, which stays in SVN until the rules are ready.

KMix problems

The early history of KMix is complicated.

  • r1499 is the initial addition of KMix code.
  • r47578 added a rewrite called kmix2, into a separate directory.
  • r50715/r50716 deleted the original kmix. At this point there is only a kmix2 directory.
  • r52199 re-added the kmix directory. I'm not sure what code is this, it seems to be an invalid mixture of kmix2 and the old kmix. Presumably only the first edit of each file?
  • r52201 updated the contents of the kmix directory to actually match what was in kmix2 (kmix@52201 and kmix2@52201 only differ in the pics subdirectory). Probably 52199 should be ignored/deleted and 52201 pretended to be the actual addition.
  • r52202 deleted the kmix2 directory.

The problem is with documentation. During all this moving around, the documentation stayed in trunk/kdemultimedia/doc/kmix, even during periods where there were two simultaneous kmix branches in progress.