[Twisted-Python] Twisted and SVN

glyph at divmod.com glyph at divmod.com
Wed Oct 12 02:05:18 EDT 2005

On Wed, 12 Oct 2005 12:08:49 +1000, Grant McDonald <gmcdonald at infocomp.com> wrote:

>I know this isn't really the forum for talking about subversion, but Twisted
>as we all know is a rather large distributed development effort and it uses

It's totally off topic, but I'd be happy to grind an axe on behalf of the SVN developers here!

>There is currently a debate going on in my company about the benefits
>of subversion over cvs and if I may I'd like to tap your knowledge about the
>pitfalls and benefit of subversion use (if any) that you've come across in
>your usage of the product.

One pitfall - you probably want to use the new fsfs backend so you don't run into difficulties with bsddb.  Other than that, I haven't really seen any (except those you would have already seen 100x over with CVS)

>Do you see it as a far better solution than CVS?


Zooko summarizes it best at <http://zooko.com/revision_control_quick_ref.html>:

   "CVS: use Subversion instead."

There are other version control systems: p4, bk, darcs, bzr, hg, monotone, to name a few.  I personally am not a big fan of any right now (though bzr has quite a lot of promise), but it cannot be denied that there are valid reasons to use each of them depending on your preferred workflow.

CVS, however, is an evolutionary dead end.  The style of workflow it encourages is FAR better implemented in Subversion.  The tools around Subversion are better and better integrated.  Subversion actually has an API, not just some loose conventions and file formats.  The commit hooks are easier to write and more powerful.  There are many more choices for deployment and maintenance which allow you to integrate it into your particular setup.  It has a better security track record.

One fact is well documented by many projects: branching was IMPOSSIBLE with CVS.  Even given the relatively few times branching was attempted in Twisted, I can attest to this truth.  Other VCS users might say that branching's not "easy" with subversion, but it is FAR better than CVS.  Branches would not just be hard to make in CVS, if you were not careful with the way you used the tool, you could break them.

Speaking of breaking things, CVS has a nasty habit of corrupting binary files unless you are very, very careful with them.  SVN detects binary files far more reliably and generally won't corrupt them.  SVN has far better support for partially-disconnected development - diff and revert work while you're offline.

SVN has better GUI integration on Windows (TortoiseSVN).
SVN has better integration with SSH (svn+ssh URLs, not random environment variables which effect how paths are interpreted).
SVN has better integration with Emacs (psvn vs. pcvs)
SVN is faster.
SVN doesn't corrupt your files.
SVN doesn't produce inconsistent checkouts if you forget magic flags (cvs up -dP)

Conclusion: CVS is completely and utterly obsolete.  Don't use it unless you have a huge repository of code already in CVS and no time to migrate it.  There is literally, absolutely no reason I would consider using CVS for a new project, or even consider continuing with CVS for any project that I came into maintainership of.  It served the community well when it was in its prime, but the world has moved on.

>Has twisted always used SVN or was it once burdened with CVS? Thanks in
>advance for your input.

Twisted used CVS and migrated to SVN.  The ability to migrate to new version control systems was one of the original motivators for us to maintain our own development rather than use a site like Sourceforge, and I think it's paid off immensely.

More information about the Twisted-Python mailing list