Why SVN?

T

Trans

Should I be using SVN rather than Darcs or Git?

Subversion has apparently become the version control system of choice
for Ruby developers --especially now that Ruby itself uses it. I
suspect that might have a lot to do with Rails and Rubyforge. Ruby
only switched over to SVN well after Rails had been using it. And
Rubyforge currently only supports SVN and CVS, which I find a bit
surprising since, from what I understand, supporting Darcs is just a
matter of having Darcs installed. And I can't imagine Git is much
different.

So I'm wondering, what's so special about SVN as opposed to the other
choices? Is it because SVN is more like CVS than the other choices?
The fact that SVN isn't distributed I would think would work against
it (though I hear SVK is supposed to deal with that). Darcs is written
in Haskell, and from the word on the street a lot of Ruby folk seem to
like Haskell. Also, Git was written by Linus Torvalds, which is about
as good as credentials can get.

Thanks,
T.
 
R

Rick DeNatale

Should I be using SVN rather than Darcs or Git?

Subversion has apparently become the version control system of choice
for Ruby developers --especially now that Ruby itself uses it. I
suspect that might have a lot to do with Rails and Rubyforge. Ruby
only switched over to SVN well after Rails had been using it.

SVN is very much like CVS. It does have better handling of the
hierarchical structure of a project in that it versions the directory
hierarchy. This makes it nicer for things like Rails which make a
fair use of directory hierarchies.
And
Rubyforge currently only supports SVN and CVS, which I find a bit
surprising since, from what I understand, supporting Darcs is just a
matter of having Darcs installed. And I can't imagine Git is much
different.

I think it's a matter of the repository itself, they'd need to have
more parallel copies of the code in different repository formats.

So I'm wondering, what's so special about SVN as opposed to the other
choices? Is it because SVN is more like CVS than the other choices?
The fact that SVN isn't distributed I would think would work against
it (though I hear SVK is supposed to deal with that). Darcs is written
in Haskell, and from the word on the street a lot of Ruby folk seem to
like Haskell. Also, Git was written by Linus Torvalds, which is about
as good as credentials can get.

A good bit of it is the relationship between CVS and SVN, if you are
used to CVS then SVN is a fairly easy transition. Those two are
probably the most popular version systems around, so it's also a
matter of market share.

Git was written as a recovery from having the BitKeeper license yanked
out from under the linux project. FWIW.
 
K

Kyle Schmitt

To quote from the SVN webpage:
Subversion is meant to be a better CVS, so it has most of CVS's
features. Generally, Subversion's interface to a particular feature is
similar to CVS's, except where there's a compelling reason to do
otherwise.

Without delving into specifics, SVN makes it a lot easier to do things
than CVS does, especially administrative tasks and branching etc.

It's powerful enough to draw hardcore CVS users to it, and power/easy
enough to draw hardcore VSS* users to it.

--Kyle


* Sometimes those hardcore visual source safe users are companies.
Whole big fat companies who makes oodles of money and don't bat an eye
at 3k/machine licensing fees.
 
D

dima

The system that is used is a good one.

I have use Visual Source Safe, CVS and for last tree and more years
exclusively subversion.
There is no bad system but I wouldn't go back to previous ones.

I use subversion on my work and form all my home pet projects.

It is very reachable thought out various protocols, easy command line
syntax, has GUI Tools, configurable from administrator's point of
view, mature system, has lot of knowledge.

This can be taken as personal opinion colored by some personal
affinity. To take more objective approach investigates what big source
repositories sites using like Google or other Forge sites.

If you have time perhaps you can try all of them and find the one that
suit your needs.
 
S

Stefan Mahlitz

Tanner said:
At work, where I work from a single workstation, always connected to the
network, I use SVN, because it fits the environment better. Use the tool
that fits the job, and move on.

I agree - and to stress the topic further, there is this site which does
a comparision of version control systems based on features:

http://better-scm.berlios.de/comparison/comparison.html

I'm using SVN at home and ClearCase at work - in regard to what I know
of both of them the comparison looks sane.

I did choose SVN because I've heard about it. And it does work for me,
so I didn't switch to something else.

Well, and there is

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

I cannot answer the original posters question, so this is completely
off-topic.

Stefan
 
K

Kyle Schmitt

There is no bad system but I wouldn't go back to previous ones.
Having used Visual Source Safe extensively I have to take exception to
that statement ;)
 
J

Jan Friedrich

Trans said:
Should I be using SVN rather than Darcs or Git?
I use git for the reason of *very simple* branching and *fast* branch
switching. If I want to try something out, I create a new branch and
check it out. Then programming and testing a bit make commits of some
steps and if I don't like it I can throw the complete branch away
without changing the main development stream. If it is nice I merge it
and delete the no longer needed branch. Therefore I like git. :)

In subversion I have never create a branch: It was to expensive for me.

m2c
Jan
 
T

Trans

This is going a bit OT for ruby-talk, but I'll bite.

To be clear I'm asking why _rubyists_ in particluar choose one over
the other --not so off topic.
I work from several different machines, in several different locations,
including from a laptop that is often disconnected from the internet. It's
extremely useful for me to be able to record changes, branch, work, in my
normal manner, without worrying about the fact that when I DO get a
connection all my changes will show up as one big lump. So I use Darcs over
SSH. It gives me a full, functional repository with "commits" as I need
them, without being connected. Then when I get back to civilization I can
push all my changes back to my main repo and be good to go, SVN can't give
me that kind of work flow, so I've moved away from it. (I'm aware of SVK,
but never could get it working well on linux/mac/and windows)

At work, where I work from a single workstation, always connected to the
network, I use SVN, because it fits the environment better. Use the tool
that fits the job, and move on.

So you actually use both. I hate the lack of DRY in that, but it looks
like I may have to go down that road too.

Thanks,
T.
 
T

Tim Becker

While distributed version control systems offer some benefits, they're
still not really mainstream. Most developers are accustomed to the way
things are done in central repositories, and working offline is, with
the exception of maybe a short stint on a plane or train, not that
common nowadays. The benefits of darcs, etc. don't really justify the
effort that would need to be put into migrating the existent proven
infrastructure and potentially alienating some people who are put of
by the slightly esoteric nature of the alternatives. A clear case of
"if it ain't broke, don't fix it". That shouldn't keep you from
hosting your code in darcs though if you prefer.

-tim
 
R

Robert Dober

To be clear I'm asking why _rubyists_ in particluar choose one over
the other --not so off topic.


So you actually use both. I hate the lack of DRY in that, but it looks
like I may have to go down that road too.
Yes indeed, what is happening in the Ruby community is happening all
over the place.
SVN will simply replace CVS slowely but surely.
Thanks,
T.
Cheers
Robert
 
T

Trans

Trans schrieb:> Should I be using SVN rather than Darcs or Git?

I use git for the reason of *very simple* branching and *fast* branch
switching. If I want to try something out, I create a new branch and
check it out. Then programming and testing a bit make commits of some
steps and if I don't like it I can throw the complete branch away
without changing the main development stream. If it is nice I merge it
and delete the no longer needed branch. Therefore I like git. :)

In subversion I have never create a branch: It was to expensive for me.

See now this is interesting. Cause I feeling inclined toward Git for
these same reasons. In fact here's a diagram of me being torn:


I, Torn

O
SVN <-- --|-- --> Git
/ \
Solid Darcs Faster
Popular Stronger
Supported Better


Not that Darcs hasn't been good to me.

:) T.
 
A

Alex Young

Trans said:
Should I be using SVN rather than Darcs or Git?
No one else has mentioned it, and I'm sure it's not relevant for you,
but TortoiseSVN is enough of a reason in itself for me to choose SVN for
any project where I might have to do anything on Windows. It's just
that good.

Other than that, I'm a big darcs fan too.
 
R

Rob Sanheim

This is going a bit OT for ruby-talk, but I'll bite.

I work from several different machines, in several different locations,
including from a laptop that is often disconnected from the internet. It's
extremely useful for me to be able to record changes, branch, work, in my
normal manner, without worrying about the fact that when I DO get a
connection all my changes will show up as one big lump. So I use Darcs over
SSH. It gives me a full, functional repository with "commits" as I need
them, without being connected. Then when I get back to civilization I can
push all my changes back to my main repo and be good to go, SVN can't give
me that kind of work flow, so I've moved away from it. (I'm aware of SVK,
but never could get it working well on linux/mac/and windows)

At work, where I work from a single workstation, always connected to the
network, I use SVN, because it fits the environment better. Use the tool
that fits the job, and move on.

Is this the only real compelling reason to switch to Darcs or similiar
alternatives? For me I'm never off the net long enough for the
centralized repository in svn to become a problem. Even when I'm
working from a laptop most of the day, I'll have free wifi available
somewhere to sync up.

- Rob
 
J

Jeremy Tregunna

Is this the only real compelling reason to switch to Darcs or similiar
alternatives? For me I'm never off the net long enough for the
centralized repository in svn to become a problem. Even when I'm
working from a laptop most of the day, I'll have free wifi available
somewhere to sync up.

The ability to cherry pick patches is also a real benefit.

--jer
 
L

Lionel Bouton

Rob Sanheim wrote the following on 13.03.2007 00:07 :
Is this the only real compelling reason to switch to Darcs or similiar
alternatives? For me I'm never off the net long enough for the
centralized repository in svn to become a problem. Even when I'm
working from a laptop most of the day, I'll have free wifi available
somewhere to sync up.

I'm currently looking at decentralized version control systems for my
own needs. So it's my early ideas on the subject, feel free to correct
them...

Where it can help is when a developper has a bright idea and want to
implement it without impacting others. She creates a branch on her local
repository to try out her idea and work with it (and can do for a
longtime, merging patches from the branch she follows usually along the
way). If you often have ideas being tried out, it can be a benefit
because these branches would all be cluttering your common repository
with a centralized system (this is why you can have lots of Linux kernel
trees with git, each with its own purpose, the most popular by far being
Linus Torvalds' one).

This probably is a real benefit when you have lots of really good devs
all motivated to try out their ideas. This allows large group of
developpers to scale.

Lionel.
 
J

James Edward Gray II

The ability to cherry pick patches is also a real benefit.

Is it, really? I'm not trying to be combative, I'm just wondering
how often that comes up.

It sounds darn cool to the geek in me, but I find myself wondering if
it happens a lot. I guess I can envision a few specialized scenarios
where it could be handy, but I really don't feel I would use it much
for mainstream software.

For example, I really doubt there are many patches to Ruby I want to
skip out on.

James Edward Gray II
 
M

Mike Kasick

Should I be using SVN rather than Darcs or Git?

Only if all your co-developers are. But otherwise, probably not.
So I'm wondering, what's so special about SVN as opposed to the other
choices? Is it because SVN is more like CVS than the other choices?

Pretty much, it's also been around longer and thus is "more mature."

Subversion is reasonably familiar to those who are used to the CVS paradigm
of revision control. Although just because people are used to it, and it's
popular, doesn't make it necessarilly good. Frankly, I'm not much of a fan
of Subversion, although I much prefer it to CVS.
Also, Git was written by Linus Torvalds, which is about as good as
credentials can get.

Yes, however Git was written to achieve nothing more than managing the
Linux kernel. The fact that it's applicable to other problem domains is a
coincidence, not a design feature. If you're managing a project that much
resembles the Linux kernel, Git might be the right choice for you. If not,
there might be an impedance mismatch.

Recently I've become a fan of Mercurial. It has a few issues (besides
being written in Python =P), but otherwise I find it to be a better match
for my needs than Subversion. I also considered Git, but I found it much
less approachable, although 1.5.0 is supposed to be easier to use.

My biggest gripe with Subversion is that branch merges are braindead (have
to specify revision boundaries), which makes branching much less useful
than it could be. Two minor gripes are that the BDB backend was a mistake
only recently seems to have gone away, and that operations tend to be
painfully slow.

In general, I'm a fan of the distributed model of development, be it with
Mercurial, Git, Darcs, etc. Branching is a great concept that isn't used
effectively in CVS or Subversion becuase of branch/merge limitations.

I like being able to checkout a project (often one I don't have
permissions to the central repository other than read), make a bunch of
local changes _and_ local commits that don't affect other users, then once
tested perform a branch push (possibly with a pull/merge).

I find that with Subversion folks are much less willing to make
intermediate commits since they tend to affect all users unless a separate
branch is used, and branches are difficult with Subversion.

The one scenario where I find Subversion really useful is when I
specifically don't want to maintain a local copy of an entire repository,
especially a large one like the Linux kernel. With Subversion, I only need
a local copy of the checked out revision. That's the one thing where I
wish there was better handling in distributed revision control
systems--although folks may claim that such handling would break the
paradigm.
 
J

Jeremy Tregunna

Is it, really? I'm not trying to be combative, I'm just wondering
how often that comes up.

In certain cases it is, yes.
It sounds darn cool to the geek in me, but I find myself wondering
if it happens a lot. I guess I can envision a few specialized
scenarios where it could be handy, but I really don't feel I would
use it much for mainstream software.

For example, I really doubt there are many patches to Ruby I want
to skip out on.

There may be patches I'd want to skip out on in other projects --
platforms I don't need support for, objects I won't use, you can
continue this line of thought. Not having the ability to just discard
those w/o affecting the repo's consistency, is nice. Sure it'd only
be used in corner cases, but when you stumble across such a corner
case, you'll wish you had that ability (or maybe you won't, who am I
to say).

--jer
 
B

Brian Mitchell

There may be patches I'd want to skip out on in other projects --
platforms I don't need support for, objects I won't use, you can
continue this line of thought. Not having the ability to just discard
those w/o affecting the repo's consistency, is nice. Sure it'd only
be used in corner cases, but when you stumble across such a corner
case, you'll wish you had that ability (or maybe you won't, who am I
to say).

I think you hit it in just one direction. The real value I find in
cherry picking is when I am providing a set of patches to an upstream
developer who may or may not want to merge certain things at any one
time. Most distributed systems handle this quite well though I think
darcs wins when it comes to the user effort needed. Other systems
often rely on complicated patch maintenance systems or force constant
"rebasing" patches with each revision (better than no support though).

The end result seems to be that you can avoid playing the baby sitter
between branches all the time. No more merge chores just to keep
things up to date. Of course, that isn't to say that avoiding merge
work always works either.

With all of this talk about SVN vs. anything not CVS, I would love to
see some ideas of how one could apply an svn interface to an existing
distributed tool. Some get close but maybe someone should make a
centralized "porcelain" for git? I don't see any reason you couldn't
implement a good portion of behaviors people seem to like.

Brian.
 
J

Jos Backus

The one scenario where I find Subversion really useful is when I
specifically don't want to maintain a local copy of an entire repository,
especially a large one like the Linux kernel. With Subversion, I only need
a local copy of the checked out revision. That's the one thing where I
wish there was better handling in distributed revision control
systems--although folks may claim that such handling would break the
paradigm.

Bazaar (also written in Python :)) has had lightweight checkouts for a while:

http://bazaar-vcs.org/SharedRepositoryTutorial?highlight=(lightweight)

They should also work for Subversion repositories.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,744
Latest member
CortneyMcK

Latest Threads

Top