Updated: XBMC Moves to Git
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.
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!
Let me just say this: It was about time!
Congrats on this fine choice of scm/hoster :)
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.
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).
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
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.
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)
@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.
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 ;)
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]
@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.
@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.
@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).
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!
@Rafal
You should open a thread on the forums, you won’t get much help on a frontpage article.
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.
I got a little sceptical with Sourceforge after reading this. http://www.exploit-db.com/papers/15823/ – search for Sourceforge.
@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.
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.
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
@Carolire Falero
This move only affects how we work with our code, nothing changes from a user’s point of view.
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)
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.
@ 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.
@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.
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.
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.
@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.