cutems93 <ms2...@cornell.edu> writes: > I am looking for an appropriate version control software for python > development, and need professionals' help to make a good decision.
> Currently I am considering four software: git, SVN, CVS, and > Mercurial. These days there is no good reason to use CVS nor Subversion for new projects. They are not distributed (the D in DVCS), and they have specific design flaws that often cause insidious problems with common version control workflows. As a salient example, branching and merging are so painful with these tools that many users have learned the terrible habit of never doing it at all. Bazaar, Git, and Mercurial are all excellent DVCS systems (and all have excellent branching and merging support). For someone new to version control, I would highly recommend Bazaar, or Mercurial if that's not an option. I would not recommend Git for new work. It helps that all of these are free software. Avoid proprietary tools for development work, especially tools that control access to your data. > What version control software do you like the most and why? Bazaar. It has, in my experience, by far the easiest default workflow to learn. It is also very flexible for the odd wrinkles in preferred workflow that most beginners don't even know enough to realise they have. (Examples of Bazaar features that make it IMO superior are: default to view only the main-line revisions without the “merge noise” that would happens with other VCSes; easily serve a branch from just about any shared file storage; easily choose a centralised repository for particular purposes without any other user needing to do anything different). Mercurial is relatively easy to learn, and full-featured; it is somewhat more restrictive than Bazaar but not enough to recommend against. Git is hugely capable and is the most popular, but still has some annoying restrictions (e.g. it can't hide merged revisions, encouraging poor practice like re-writing history when merging a branch). But my main reason to recommend against Git is that its native interface is far too baroque: it exposes its innards and requires the user to know a huge range of internal concepts to avoid making mistakes. You should be wary of GitHub, a very popular Git hosting site. It uses what amount to proprietary protocols, which encourage using GitHub's specific interface instead of native Git for your operations and hide a lot of the needless complexity; but this results in a VCS repository that is difficult to use *without* being tied to that specific site, killing one of the best reasons to use a DVCS in the first place. Gitorious is a Git hosting site that does not have this problem, and may for that reason be a good choice for hosting your Git repositories. It is also based on free software (unlike GitHub), so if the service goes away for any reason, anyone else can produce a functionally identical service from the same server code. This makes it a better bet for hosting your repositories. Neither Mercurial nor Bazaar suffer from Git's baroque complexity, and with Bazaar's command interface being IME the easiest and most intuitive to teach, I would recommend Bazaar for any new VCS user. A sad caveat, though: Bazaar suffers from a foolishly limited development pool (Canonical are the main copyright holder, and, instead of accepting contributions under the same license they grant to others, they obstinately insist on having special exclusive powers over the code). Also, Bazaar's early versions did not impress large projects like Linux or Python; improvements have long since erased the reasons for that, but too late for widespread popularity. So Bazaar's popularity never gained as much as Git or Mercurial. Worse, development of Bazaar appears to have stagnated at Canonical — and, because they insisted on being in a privileged copyright position, no-one else is in a good position to easily carry on development. Bazaar is still my recommendation of primary VCS tool, for its flexibility, speed, wealth of plug-ins, ability to view revision history sensible, and straightforward command interface. But you should go into it aware that it may be a little more difficult to find fellow users of Bazaar than of Mercurial. -- \ “The lift is being fixed for the day. During that time we | `\ regret that you will be unbearable.” —hotel, Bucharest | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list