DCVS + hosting for a startup commercial multiplatform phone app

I’m in lean startup mode, working on a simple phone app that will be published initially as a iThingy app and an Android app with, possibly, Blackberry and Symbian versions to follow. I’m about to go from no repository to needing a central repository that up to 4 very part-time resources will be sharing. Two of us have no version control background, one has used Subversion, and I’ve used most of the major centralized VCS systems.

I’m not going to be pushing the technical limitations of any VCS for a long time; I’m sure that any of the major systems would work fine. And the hosting accounts I’ve looked at seem reasonable. So I’m really focussed on minimizing the downside risks. That is, I’d like to find a stable setup that is easy to learn in general, easy to use from Windows/Eclipse, and won’t paint me into any obvious corners for the next 12 months or so.

A quick search of the web had led me to consider the following pairs of DVCS and hosting service, with what I think I’m hearing as their strengths and weaknesses (for my purposes):

Bazaar/Launchpad — My initial choice since I need to get more familiar with this pair for the Google Summer of Code mentoring I’m doing. But, whatever the technical merits, a non-starter for me because they are purely open source, no private repositories plans to purchase that I can see.

Git/GitHub — Git: Fast, light, ultimately flexible, but relatively less Windows friendly, Eclipse plugin (eGit) available but relatively young, GitHub: widely used, pricing is fine.

Mercurial/BitBucket — Mercurial: a little less flexible, a little more Windows friendly, Eclipse plugin seems a bit more mature, BitBucket: widely used, pricing is fine, includes a wiki and an issue tracker that we might be able to use instead of something like BaseCamp, at least for a while.

Mercurial/BitBucket seem like the winning pair so far for my particular situation; at least two of us are definitely going to be working mostly from Eclipse on Windows and reducing my own learning curve is a priority. 😉

But I have two specific questions:

  1. Am I wrong about Bazaar/Launchpad and is there a viable, secure way to use them for proprietary code?
  2. Any reason to think that the Mercurial/Bitbucket pair will end up being a headache for my Mac developer, soon, or for Blackberry or Symbian developers a little later?

  • Reproducing git branching model with help of mercurial bookmarks
  • Specifying where Version Control repositories are stored
  • Partial branch or partial merge or other way to help me to sync dotfiles?
  • How can I force mercurial to accept an empty commit
  • Work on one commit while browsing another (Git/Mercurial)
  • What DVCS support Unicode filenames?
  • Switch to hg-flow model: how to rebase commits and branches
  • Mercurial branching and merging without having to push branch
  • 3 Solutions collect form web for “DCVS + hosting for a startup commercial multiplatform phone app”

    I’m a Mercurial developer so I will (of course) support the choice of Mercurial and Bitbucket 🙂 That being said, all three systems are good. My preference for Mercurial lies in the fact that it gives you the same power as Git, but with fewer sharp edges to look out for.

    About Mercurial, let me add that:

    • MercurialEclipse is backed by a company called Intland and they put a lot of effort into improving the plugin since they use it themselves for all their development.
    • MacHg gives you a nice native Mac frontend for Mercurial. It comes with its own bundled version of Mercurial, so you should be good to go.

    Launchpad does offer private hosting. See: https://launchpad.net/+tour/join-launchpad
    I can’t comment much on it as I haven’t tried the private hosting part but I do like launchpad quite a bit.

    When I was using bzr for some private stuff, I used it with my web host and bzr+ssh. bzr also supports other protocols like sftp (which is slower than bzr+ssh). Its trivial to use bzr with your own server as bzr has a pure python fallback. So I just had to untar bzr tarball on the server and add it to the path. For bug tracking etc. I was using trac. There is also a trac-bzr plugin but I haven’t used it myself.

    With bzr you could start off hosting your own server and later if you do decide to go with a launchpad plan you can always push your repos there.

    I seldom venture into the Windows world, but I used msysGit to sync my documents folders over my Mac, Linux and Windows portables without problems for a year (until I hit a 2GB filesize limit on the Windows box).

    We use GitHub for internal closed source development and are very happy about it. We found no major issues in the eclipse Git plugins or IntelliJ (which we currently use), except that the provided functionality is sometimes clunky in our specific workflow (I mean that the dialog propose the ‘wrong’ defaults).

    Most of the git manipulation is done on the commandline as that is easiest and fastest anyway and the IDE’s seem to cope gracefully with the changes.

    My 3 most appreciated features are its SPEED, the code review support in github and the “stash’ functionality.

    Git Baby is a git and github fan, let's start git clone.