I'm evaluating various options for getting our team away from CVS. We have another large team on another site using Subversion, and some of our developers work with the Subversion server. Therefore, Subversion is an obvious choice for our team. However:
- Operations involving the Subversion server can be coffee-break slow (although we have a good connection between sites).
- Many of us our sold on the idea of distributed version control, and use Mercurial or git extensively (and then merge and commit to CVS and grab changes from
git-svn looks interesting but what I'd like to know is how much of the power of a DVCS such as git is lost by having a handful of centralised branches in Subversion. In particular, I'd still like to be able to keep the kind of workflow we have with Mercurial, such as:
- Can we pull the repositories of other team members and merge, and thus collaborate on feature branches before they go to our main stable trunk on Subversion?
- Can we expect the wealth of trickery possible with git to generally work, or do we need to be careful to avoid confusing git-svn?
- Can we use git to speed up checkouts from Subversion by pulling it across the connection from the other site once and then pulling it into individual repositories once.
- If someone commits to Subversion, can we arrange that other git users via git-svn still see the full development history?
- Can we basically avoid having to wait for interactive operations on the Subversion server despite it having half a world of latency?
Many of us are used to the idea of a main fairly stable shared branch with a simple linear history which everyone can push to, and so they merge to the tip regularly. It isn't clear to me how to support this work flow well with git (or Mercurial or Bazaar).