Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #47888

Re: Version Control Software

From Ben Finney <ben+python@benfinney.id.au>
Subject Re: Version Control Software
Date 2013-06-13 12:30 +1000
References <98c13a55-dbf2-46a7-a2aa-8c5f052ff375@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.3155.1371090658.3114.python-list@python.org> (permalink)

Show all headers | View raw


cutems93 <ms2597@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

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Version Control Software cutems93 <ms2597@cornell.edu> - 2013-06-12 16:27 -0700
  Re: Version Control Software Mark Janssen <dreamingforward@gmail.com> - 2013-06-12 16:36 -0700
  Re: Version Control Software Joel Goldstick <joel.goldstick@gmail.com> - 2013-06-12 19:52 -0400
  Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-13 10:04 +1000
  Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-12 21:41 -0500
  Re: Version Control Software Ben Finney <ben+python@benfinney.id.au> - 2013-06-13 12:30 +1000
    Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-13 04:54 -0700
    Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-13 17:06 +0000
      Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 07:26 +1000
        Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-13 21:53 +0000
          Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 07:59 +1000
          Re: Version Control Software Zero Piraeus <schesis@gmail.com> - 2013-06-13 18:20 -0400
          Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-13 20:09 -0400
      Re: Version Control Software Fábio Santos <fabiosantosart@gmail.com> - 2013-06-13 23:15 +0100
      Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 08:17 +1000
      Re: Version Control Software Benjamin Kaplan <benjamin.kaplan@case.edu> - 2013-06-13 15:24 -0700
      Re: Version Control Software Neil Hodgson <nhodgson@iinet.net.au> - 2013-06-14 08:53 +1000
  Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-12 21:48 -0500
  Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-12 22:51 -0400
    Re: Version Control Software Rui Maciel <rui.maciel@gmail.com> - 2013-06-13 13:43 +0100
  Re: Version Control Software cutems93 <ms2597@cornell.edu> - 2013-06-12 23:00 -0700
    Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-12 23:43 -0700
    Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-13 07:08 -0400
    Re: Version Control Software MRAB <python@mrabarnett.plus.com> - 2013-06-13 12:26 +0100
      Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-13 04:46 -0700
    Re: Version Control Software Anssi Saari <as@sci.fi> - 2013-06-14 15:06 +0300
      Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-14 08:32 -0400
        Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-14 14:24 +0000
          Re: Version Control Software Dave Angel <davea@davea.name> - 2013-06-14 16:55 -0400
          Re: Version Control Software Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-06-14 20:26 -0400
          Re: Version Control Software Tim Delaney <timothy.c.delaney@gmail.com> - 2013-06-15 15:39 +1000
          Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-15 15:53 +1000
            Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-15 10:16 -0400
              Re: Version Control Software Giorgos Tzampanakis <giorgos.tzampanakis@gmail.com> - 2013-06-15 15:29 +0000
                Re: Version Control Software Dan Sommers <dan@tombstonezero.net> - 2013-06-15 18:29 +0000
                Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 09:01 +1000
                Re: Version Control Software Tim Delaney <timothy.c.delaney@gmail.com> - 2013-06-16 07:49 +1000
              Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 09:14 +1000
                Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-15 20:55 -0700
                Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 14:13 +1000
                Re: Version Control Software Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-16 05:20 +0000
                Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 15:29 +1000
                Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-16 05:15 -0400
                Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 19:51 +1000
              Re: Version Control Software Chris “Kwpolska” Warrick <kwpolska@gmail.com> - 2013-06-16 15:30 +0200
                Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-16 09:50 -0400
                Re: Version Control Software Lele Gaifax <lele@metapensiero.it> - 2013-06-16 17:48 +0200
                Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-16 13:02 -0400
              Re: Version Control Software Jason Swails <jason.swails@gmail.com> - 2013-06-16 12:39 -0400
  Re: Version Control Software Serhiy Storchaka <storchaka@gmail.com> - 2013-06-13 10:20 +0300
  Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-13 07:34 -0500
    Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-13 08:52 -0400

csiph-web