Updated: XBMC Moves to Git

January 2nd, 2011 theuni

As we discussed in a recent post, XBMC is finally moving to a current SCM. Many of us have been using git-svn for quite a while anyway, but the burden of doing a real migration has kept us from making the switch. Today the migration begins.

We have picked GitHub as our host due to their great features like pull requests and the commenting system, as well as their lightning-fast speed compared to some of the others. We will push clones to gitorious, sourceforge, repo.or.cz, and anywhere else that makes sense (ah, the beauty of a distributed scm!). We’re very excited about git as it should allow for much more efficient development. For those who would like to read up on git, some great propaganda is available here.

The transition may be a bit bumpy, and some of our services may be down for a day or two during the transition (trac being the biggest concern). Many projects experience a few headaches in such a transition, so we are prepared to think on our toes.

Now for the unfortunate part. We have had a clone of svn on github and gitorious for quite a while. Those of you who have used it know that it’s huge.. almost 1gb. We have decided to do a one-time filter on the repo to get the size down to nearly 250mb. This means that when the final repo is ready (link coming soon) everyone with an existing clone will need to grab a new one. We think this is a necessary one-time pain that will make life much easier in the long-run.

The final svn commit was r35744. Everyone who builds from source will need to use git from this point on. We’ll do our best to answer any questions in the comments, but let’s avoid a SCM flamewar, ok?

Update: Done! The move to our new repo is done and we have resumed committing. Some services like Trac still need to be updated, and we will need to get clones migrated to the other sites, but we’re well on our way.

  1. Tuxie
    January 2nd, 2011 at 15:17 | #1

    Congratulations! After the initial migration pain I’m sure this will be a big boost to XBMC development! Branching, and especially merging is a dream in Git (and other modern distributed SCMs) compared to old SCMs such as CVS and Subversion. The whole work flow is a huge improvement!

  2. Marcus
    January 2nd, 2011 at 15:20 | #2

    Let me just say this: It was about time!
    Congrats on this fine choice of scm/hoster :)

  3. Johnny
    January 2nd, 2011 at 15:26 | #3

    Anyone links to any good how-to guides, tutorials, or manuals for TortoiseGit and Git?

    btw, I think that the post meant to link to SCM as in “Software Configuration Management” on wikipedia, and not to “Source Code Management” as that is by definition only a part of Software Configuration Management.

  4. Tim
    January 2nd, 2011 at 15:36 | #4

    I’m going to try using the MercurialGit plugin with the XBMC repo once it’s been pared down. If it works well that will give people more options for working with XBMC (Hg and Git are so close in functionality that it’s not really worthwhile using both).

  5. Samuel1604
    January 2nd, 2011 at 16:17 | #5

    Great choice, I am glad you have made this move and hoping this will improve your workflow.. Have you looked over Gerrit as well for code reviews ?

    Sami

  6. January 2nd, 2011 at 16:17 | #6

    Git would make it a lot easier to do rolling bug fixes only on the current released version and then only new features in the main branch.

  7. January 2nd, 2011 at 19:30 | #7

    Hooray \o/ Double thanks for filtering out the huge files; xbmc is still pretty huge, but 75% is a very nice reduction :)

    Might want to link to the repository though :P (I am guessing that https://github.com/xbmc/xbmc is the official one?)

    Have you considered tidying up the branches / tags? There seem to be branches for the code at a specific SVN revision, which I imagine should be tags, if they’re needed at all (they seem really old)

  8. theuni
    January 2nd, 2011 at 19:53 | #8

    @Shish
    Thanks for the enthusiasm, but did you READ the post? :P
    I’m working on the repo now. It’s a massive filter job. Of course the branches and tags will be cleaned.

    And no, that’s not the final repo, still the old one.

  9. Brice
    January 3rd, 2011 at 10:01 | #9

    Hi just for curiosity, why the team did choose Git over Mercurial.
    I know they are very close in fonctionnality, but I thought Mercurial had a very good OS support (with Python) and seems better documented. Don’t get me wrong here, Git is a REALLY good choice, I’m just wondering the reasons to this choice so I can share your reasons (and mine) with my clients. Since XBMC is a huge project it should be quite interesting to have a feedback on this.

    Oh and Happy New Year to the whole gang ;)

  10. January 3rd, 2011 at 12:45 | #10

    So for the people who are compiling from SVN, which has stopped with r35744, when git is all up and running, I presume you only have to pull the source from the git repo, or am I wrong in thinking that.

    Also the dependencies and everything else remains the same as with svn, one we remove svn and install git, I suppose.

    I’m sure that someone who has some experience will clarify this in the how-to and readme’s, I would just appreciate if someone already has experience to post something in forums and make it a sticky or whatever is suitable.

    I will Image the current install before I venture onto these new lands, just in case…. and just in case someone less savvy is reading I recommend they Make a full image of systems/partitions so if there’s any failures they can fall back on something, other then resorting to blaming Team XBMC or blaming it on anything but pebcak.

    [Advertisement removed -theuni]

  11. theuni
    January 3rd, 2011 at 12:55 | #11

    @Brice
    Simple.. most of the devs already use and prefer git. As for the details, I’d like to avoid a debate here as this one tends to turn into a holy war.

  12. theuni
    January 3rd, 2011 at 12:56 | #12

    @X3lectric
    All that changes is where the code comes from. No need to remove your old svn dir if you’d like to keep it as a backup. And certainly no need to reimage your hard drive.

  13. Tim
    January 3rd, 2011 at 17:04 | #13

    @Brice
    I’m guessing it’s because someone(s) on the team had experience with Git and successfully evangelised it to the rest. I’m personally on the Mercurial side (see comment above) but see no compelling reason these days to go for one or the other.

    Git has converged more towards Hg in usage (single “git” command for most things, etc) and has a very reasonable Windows implementation now (which is where it was lacking).

  14. Rafal
    January 4th, 2011 at 10:54 | #14

    I have just one problem with the new XMBC. Before on the old version I had the bluray add-on installed and working perfectly…. and now when I upgraded the XMBC to the new version the add-on dissapeared and I cannot put it in addons again. There are plenty of different addson you wrote above, which are great, but it seems that bluray addon cannot be put to work now. Could you help me with this issue? all the best in the new year 2011!

  15. bobo1on1
    January 4th, 2011 at 12:08 | #15

    @Rafal
    You should open a thread on the forums, you won’t get much help on a frontpage article.

  16. djdafreund
    January 5th, 2011 at 01:51 | #16

    Well, i’ll be looking forward to seeing the new “XBMC Git instructions” wiki ;). I already found what google instructions i COULD find on installing the SAID TortoiseGIT,PuTTy,msysgit, git and setting things up, but unfortunately this (read a number of times) isn’t enough for user’s newer using GIT before. Which is why i left the last GIT project i worked on (FoFiX) due to it just being very difficult. I’m an optimistic STILL, and just patiently waiting for instructions just to make sure thing’s get set up right. I know it’s not as easy as SVN (install tortoiseSVN, make dir (once), add xbmc svn path, update, nothing else), but once instructions are done for XBMC, i will enjoy being able to continue building GIT XBMC as well. I don’t enjoy going more then 1-2 days without building, since i have a skin I co-develop we need to make sure is always up to date with compatibility.

  17. dexter
    January 5th, 2011 at 04:46 | #17

    I got a little sceptical with Sourceforge after reading this. http://www.exploit-db.com/papers/15823/ – search for Sourceforge.

  18. Brice
    January 5th, 2011 at 07:24 | #18

    @theuni Ok, well I didn’t want to start a debate, at most I wanted to gather interesting clues on this choice. And a clue you gave me. Finally as stated GIT is still a perfectly good choice.

    @Tim Indeed I feel the same as you, I was just looking for feedback on the choice here. I got it :)

    I’m stopping here about this subject.

  19. queeup
    January 5th, 2011 at 11:21 | #19

    GitHub RSS feed support is very bad :( And also I am translater and I don’t want to clone whole code. With Eclipse Egit ıt’s not possible to clone what you want. I don’t know about other git clients or console. I will wait for other sites clone.

  20. January 5th, 2011 at 13:17 | #20

    Sorry i am not a technician but i use XBMC live, will i need to change something to update to a new version???
    I use today apt-get in SVN rep… will i have to change it?

    Thanks,

    Carol

  21. theuni
    January 5th, 2011 at 13:19 | #21

    @Carolire Falero
    This move only affects how we work with our code, nothing changes from a user’s point of view.

  22. djdafreund
    January 5th, 2011 at 20:48 | #22

    So thats meaning the svn will still be up to date kept? (assuming pulls will get done to make sure svn trunk is up to date (within close reason) If so, this is great news (and huge relief) And of course i would not bad mouth GIT, as it was clearly thought hard and done for good reason’s. I only know that a huge project i was heavily involved in “Frets on Fire X” lost about 70% of the community within 3 month’s (like flies) after switching to GIT due to the differences on the user end of things. I won’t compare since the XBMC Team are MUCH more advanced in skills and a different class of end-user’s (millions of users if not more, compared to 100’s of thousands of users probably.), so whatever it’s worth i would switch no matter what if that’s the direction. Without a thought. I’m a heavy XBMC supporter, since the beginning of XBMP.(Remember THOSE days? People even debated XBMC vs. XBMP is better? LOL)

  23. djdafreund
    January 5th, 2011 at 22:17 | #23

    Ok, taught myself some GIT stuff in anxiousness, and got TortoiseGIT working (so far) and now just needing to figure out how to modify my batch file that i made that updated my SVN branch, then build, since GIT is different. And what to do about looking at the changelog, since it’s using SVN still, is there a proposed replacement so continue looking at daily changes? I guess that’s still WIP. While writing this, it finished building a new GIT XBMC without a hitch. NICE!! Only thing is the filename convention is messed up (IE)”XBMCSetup-Rev-dx.exe” since no revision technically. Won’t be easy to know what’s what if having multiple files in that directory. ‘conflict’. Still, builds fine so far.

  24. January 6th, 2011 at 04:42 | #24

    @ queep – with git you can’t clone subfolder, only the whole tree.

    if you prefer you can use trac and upload files as you are used to. but really, git+github is so much more sexy if you just take the time to learn.

  25. Misha
    January 6th, 2011 at 08:05 | #25

    @Tuxie
    First of all Hello everyone,

    Guys, does somebody know what was happening to Apple Movie Trailers add-on ? I can not find it anymore in this final version. When I try to install it via SYSTEM -> ADD-ONS -> GET ADD-ONS -> XBMC.ORG ADD-ONS -> VIDEO ADD-ONS I found that this plugin it is not listed there anymore ? Is there any workarround for this ? Can somebody help me ?

    Mihail.

  26. Tim
    January 6th, 2011 at 16:54 | #26

    Successfully cloned the repo to a Mercurial repo using MercurialGit (hg-git). Only took about half an hour to download everything, but then took several hours on my server’s Q6600 to convert all the Git objects to Mercurial objects. This is a one-off task though – future pulls should be much much quicker. Very glad the repo was filtered though.

  27. Josh
    January 8th, 2011 at 11:01 | #27

    Uhh what? That was the most confusing blog post ever, full of unexplained jargon and acronyms which would make your average Marketing MBA blush with shame.

  28. theuni
    January 9th, 2011 at 15:51 | #28

    @Josh
    Thanks, this was a post clearly aimed at techies… I would blush if a marketing director was able to understand it. Thanks for the feedback, though.

Comments are closed.