Why SVN?

On 3/12/07, Jeremy T. [email protected] wrote:

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.

On 12-Mar-07, at 8:05 PM, James Edward G. II wrote:

On Mar 12, 2007, at 6:13 PM, Jeremy T. wrote:

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.

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

Found this on Wikipedia.

“Many projects support both POSIX and Windows. Such projects typically
avoid using an SCM system that poorly supports Windows, even if most
developers use POSIX-based systems. Examples of projects that have
publicly ruled out any use of git, due to git’s poor support of
Windows, include Mozilla [3] and Ruby [4].”

T.

On Tue, Mar 13, 2007 at 09:21:36AM +0900, Mike K. wrote:

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.

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.

Porcelain? :slight_smile: I was expecting to find a SVN UI with the google I just
did.

On 3/13/07, [email protected] [email protected] wrote:

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.

Porcelain? :slight_smile: I was expecting to find a SVN UI with the google I just did.

From http://git.or.cz/

“Besides providing a version control system, the Git project provides
a generic low-level toolkit for tree history storage and directory
content management. Traditionally, the toolkit is called the plumbing.
Several other projects (so-called porcelains) offer compatible version
control interfaces - see the related tools list.”

I guess that is the mentality you get from a linux kernel hacker. It’s
all plumbing or it must be porcelain. :slight_smile:

Brian.

On 3/13/07, Aredridel [email protected] wrote:

The other thing to note is that you can use two SCMs at once. I quite
often push to a darcs repo that is also a SVN checkout. Once I get the
patchset to a state I like, I can commit a huge chunk all at once, and
use the darcs changelog to make a good commit entry.

I’d love to hear about this in more detail (off list if you prefer),
in terms of best practices, any drawbacks you’ve discovered, etc…
We’re in the process of moving from Mercurial to SVN at work, and if
possible I’d like to continue using Mercurial for developing
experimental features, and then check them into the main SVN
repository when they’re completed.

martin

Hi,

In message “Re: Why SVN?”
on Tue, 13 Mar 2007 04:25:50 +0900, “Trans” [email protected]
writes:

|Should I be using SVN rather than Darcs or Git?

For your information, I use stgit for managing my local Ruby
repository. I wanted to manage my experimental patches in stack
based.

          matz.

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.

I like the ability to develop a patchset as an object – ‘here, does
this set work?’ – and discuss. I like the orientation of discussing
changes rather than states.

I cherry-pick a lot – it also lets me take my production copy – which
has a couple site-specific changes to version-controlled files still –
and make a hotfix and push back to the repo from that without getting my
changes mixed in.

It suits my workflow.

The other thing to note is that you can use two SCMs at once. I quite
often push to a darcs repo that is also a SVN checkout. Once I get the
patchset to a state I like, I can commit a huge chunk all at once, and
use the darcs changelog to make a good commit entry.

I’m trying git with one project. So far, so good. It’s also a really
good tool. And mightily fast.

Aria

I like the ability to develop a patchset as an object – ‘here, does
this set work?’ – and discuss. I like the orientation of discussing
changes rather than states.

I cherry-pick a lot – it also lets me take my production copy – which
has a couple site-specific changes to version-controlled files still –
and make a hotfix and push back to the repo from that without getting my
changes mixed in.

[http://www.thtmobile.com]Mobile Solution
[http://www.thtmobile.com/partners.htm] Mobile Solutions

On 3/13/07, Yukihiro M. [email protected] wrote:

Hi,

For your information, I use stgit for managing my local Ruby
repository. I

Oh oh, Matz, you’re going to get the pythonistas all excited


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On Mar 13, 8:09 pm, Yukihiro M. [email protected] wrote:

Hi,

In message “Re: Why SVN?”
on Tue, 13 Mar 2007 04:25:50 +0900, “Trans” [email protected] writes:

|Should I be using SVN rather than Darcs or Git?

For your information, I use stgit for managing my local Ruby
repository. I wanted to manage my experimental patches in stack
based.

Cool. So how do you sync back up with the SVN repo? I tried using SVN
and Darcs on the same project and ran into problems. Maybe it’s not a
problem with Git? Or do you have to do something special?

T.

Hi,

In message “Re: Why SVN?”
on Wed, 14 Mar 2007 22:16:13 +0900, “Trans” [email protected]
writes:

|Cool. So how do you sync back up with the SVN repo? I tried using SVN
|and Darcs on the same project and ran into problems. Maybe it’s not a
|problem with Git? Or do you have to do something special?

I used tailor to import repository from svn to git. After that, I
have a directory that have both .svn and .git sub-directories. Maybe
git-svn would do better job.

          matz.

Hi,

In message “Re: Why SVN?”
on Wed, 14 Mar 2007 19:07:15 +0900, “Rick DeNatale”
[email protected] writes:

|> For your information, I use stgit for managing my local Ruby
|> repository. I
|
|Oh oh, Matz, you’re going to get the pythonistas all excited

I don’t want to have prejudice against tools by the language they are
written, until I have to hack them. I abandoned tailor (and svk) for
that exact reason.

          matz.

On 3/12/07, Trans [email protected] wrote:

Should I be using SVN rather than Darcs or Git?

Yes.

Darcs and Git are distributed version control systems without much
proven technology behind them, and are painfully Unix-oriented.

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.

Quality in kernel management doesn’t mean his version control system
is any good. I’m not saying it’s bad – at all – but the credentials
don’t transfer there.

Distributed systems fit very few development models.

-austin

On 3/12/07, James Edward G. II [email protected] wrote:

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.

Spot on, James. Most of the time, patches can’t actually be simply
cherry-picked in any environment.

It’s easier with advanced version control systems like Perforce, but I
find I don’t generally cherry-pick those anyway.

-austin

On 3/14/07, Austin Z. [email protected] wrote:

The fact that SVN isn’t distributed I would think would work against

-austin

I can’t resist replying to this troll. I call FUD on the “distributed
version control systems without much proven technology behind them”
claim until we get details. I’d really like to hear why you think you
have a winner just because something is different. It’s obvious you
think you have a great reason to feel strongly about using Subversion.
I think it is only fair that you share why if you plan on telling
people such absolutes. So please, enlighten me.

Brian.

On 3/14/07, Brian M. [email protected] wrote:

I can’t resist replying to this troll. I call FUD on the “distributed
version control systems without much proven technology behind them”
claim until we get details. I’d really like to hear why you think you
have a winner just because something is different. It’s obvious you
think you have a great reason to feel strongly about using Subversion.
I think it is only fair that you share why if you plan on telling
people such absolutes. So please, enlighten me.

Careful who you call troll. You’ll find your assumption comes back to
bite you.

Technology is proven by (1) wide use and (2) long experience. CVS and
Subversion at this point are proven technologies that are widely
adopted. That doesn’t necessarily make them best of class, but it
means that people know what to expect from them. Some of that will
include bugs, but the core technology is proven. There are billions of
lines of code in CVS and Subversion systems being protected and
managed right now.

Subversion has meaningfully improved upon CVS and has improved the
state of the art for open source centralized source management. I
wouldn’t dare call it best of class, but I would use it for any open
source project because it (1) has a lower barrier of entry across
platforms and (2) works in ways that people expect it to. I’m less
convinced that I’d use it for professional software development after
my experience with Perforce at my current job. Perforce is an
absolutely amazing piece of software that gives many of the supposed
benefits of distributed development platforms (lightweight branches,
patch cherry picking), and with p4proxy, you get better distributed
development (although not apparently disconnected distributed
development).

There’s so many different distributed systems right now that work
differently from each other and have forked because of differences in
opinion on how the programs should work that it’s nearly impossible to
choose one reliably. Many of them suffer from an extreme anti-Windows
bias and very few of them (if any!) have GUI support for visualizing
changes over time. I personally find disconnected distributed version
control systems to be very fragile in that entire branches can go away
because a middle version is purposefully or accidentally deleted.
People say that distributed systems have cheap branching, but I find
that very hard to believe, since (at least in the ones that I’ve
tried, and I have a hard time imagining how others would differ) the
branches are physical copies in a different location. That’s cheap for
the making, yes, but your total storage cost goes up (since none of
the advantages of having a single repository can be found) and it then
becomes possible to lose branches from your repository (cf fragility
above).

There’s a lot of things to like about the ideas of DDSCM, but in the
real world, I find that I’m rarely disconnected from the 'net long
enough to care about the fact that I’m using a centralised management
system.

So no, not a troll. Well informed using shorthands that should have
been pretty easy to determine if you weren’t blinkered by the
proponents of DDSCM in the first place.

-austin

On 3/14/07, Austin Z. [email protected] wrote:

On 3/14/07, Brian M. [email protected] wrote:

I can’t resist replying to this troll. I call FUD on the “distributed
version control systems without much proven technology behind them”
claim until we get details. I’d really like to hear why you think you
have a winner just because something is different. It’s obvious you
think you have a great reason to feel strongly about using Subversion.
I think it is only fair that you share why if you plan on telling
people such absolutes. So please, enlighten me.

Careful who you call troll. You’ll find your assumption comes back to bite you.

I knew I could count on a good reply. I know you are a good debater. I
need not bring up the topic of benchmarking with you for example. :wink:

Technology is proven by (1) wide use and (2) long experience. CVS and
Subversion at this point are proven technologies that are widely
adopted. That doesn’t necessarily make them best of class, but it
means that people know what to expect from them. Some of that will
include bugs, but the core technology is proven. There are billions of
lines of code in CVS and Subversion systems being protected and
managed right now.

Yes. Though there a millions of lines of code written in languages a
lot here would consider primitive. There are also millions of more
lines of code being written with no version control as well (I would
guess, though there is no denying that this number is larger than it
should be). I think I will agree that the wide spread use is
important, but I don’t think adoption is the only metric to look at.

development (although not apparently disconnected distributed
development).

No argument here. There are a lot of projects that thrive off of easy
entry. I think Ruby on Rails is an excellent example that many in this
community have been influenced by. I hear more and more people taking
up Subversion because of how pleasantly it works with the rails
development environment.

Professionally, I use subversion, though my team is looking to migrate
to something that does a better job at branch management and merging.
The verdict hasn’t been given yet, but it will likely also be
distributed. Your review (and the reviews of others in this community)
might make an impact. I will likely give Perforce another shot (though
I know the team I work with is much more likely to want something open
source).

The important thing here is, for those of us who can afford to learn a
new tool (effort required here is usually exaggerated), the history of
a tool is a smaller barrier to entry (provided it works correctly). I
am much more likely to pick up an alternative in some of my projects
because of this.

tried, and I have a hard time imagining how others would differ) the
branches are physical copies in a different location. That’s cheap for
the making, yes, but your total storage cost goes up (since none of
the advantages of having a single repository can be found) and it then
becomes possible to lose branches from your repository (cf fragility
above).

I have to admit that none of the people I work with write their code
in a Windows environment. In fact, as a team, we officially don’t
support it. The only windows environments we have left are for testing
some of the web applications in Internet Explorer. This would probably
count as a bit of context I guess.

I will note that I’ve never had a branch problem, though I guess it
depends on how you manage your code. I usually have very little that
could be lost if I, for some reason, wanted to rm -rf a working copy.
I think most of this is helped by following a set of conventions for
each tool. There is a reason subversion makes use of the
trunk-tag-branch structure… and there are similar reasons that
people work certain ways with other tools. I usually have a couple
places I put code depending on the project type. In many cases, I
setup my environment with a central repository that represents
something like a trunk. Real development is done outside of the trunk
but synced in functional groups. Locally, small changes are recorded
quite often (this accentuates the power of cherry picking in an
interactive system). It seems that this duplication gives it the same
“relative” reliability that a standard Subversion setup would have
(detached code repo being one if you have multiple machines).

For cheap branches… I’m not sure either. It has always boggled my
mind why people are so upset when two files have to be duplicated. One
system that really does cheap branching well is git. Only a single
file with a few characters is created for each branch (initially,
changes are added of course). I’d love to hear from others who know
more about this.

There’s a lot of things to like about the ideas of DDSCM, but in the
real world, I find that I’m rarely disconnected from the 'net long
enough to care about the fact that I’m using a centralised management
system.

True enough. I like some of the ideas because I am one of those people
who has experienced significant offline development. Maybe it
conditioned me to where I am now.

So no, not a troll. Well informed using shorthands that should have
been pretty easy to determine if you weren’t blinkered by the
proponents of DDSCM in the first place.

Yes. I know I lean far to the DDSCM side of things and I don’t intend
to hide it. I think the quality of this reply made up for the
originally open claims. Though, I would like to ask, out of all the
problems you mention, none of them really give a benchmark that could
be used to note if a DDSCM would be ready under your definitions, are
there any specific things that could be fixed or done to make your
trust in a DDSCM system more likely? Or is DDSCM, for some reason,
mutually exclusive with what you get out of your current SCM usage?

Thanks,
Brian.

On 3/14/07, Brian M. [email protected] wrote:

guess, though there is no denying that this number is larger than it
should be). I think I will agree that the wide spread use is
important, but I don’t think adoption is the only metric to look at.

It’s an important metric for the measure of the quality of the tool.
With more installations, it’s significantly more likely bugs will be
reported and (hopefully) fixed.

No argument here. There are a lot of projects that thrive off of easy
entry. I think Ruby on Rails is an excellent example that many in this
community have been influenced by. I hear more and more people taking
up Subversion because of how pleasantly it works with the rails
development environment.

I use Subversion primarily with RubyForge. I use Perforce at work. I
haven’t yet decided what I’ll do for stuff that isn’t for RubyForge or
work; it’s sort of sitting in limbo at the moment. (The decision will
really come when I change my home server.)

Professionally, I use subversion, though my team is looking to migrate
to something that does a better job at branch management and merging.
The verdict hasn’t been given yet, but it will likely also be
distributed. Your review (and the reviews of others in this community)
might make an impact. I will likely give Perforce another shot (though
I know the team I work with is much more likely to want something open
source).

Be warned: Perforce is NOT cheap. However, we had what seemed to be an
issue a few weeks back and they responded within four hours by email and
kept the case open for two weeks following up to make sure that we were
okay. I have nothing but praise for Perforce at this point. There’s
occasional merge issues, but for my money p4v is perhaps the best
graphical interface for any SCM out there. If you’ve ever used
TortoiseSVN, it’s got some nice features, but p4v gives me the ability
to see the diffs between any two revisions of a file dynamically
(“time-lapse” view), which I use extensively when merging extensive
changes that even normal diff produces ugly files for.

That said, I still use the command-line tools extensively.

I have to admit that none of the people I work with write their code
in a Windows environment. In fact, as a team, we officially don’t
support it. The only windows environments we have left are for testing
some of the web applications in Internet Explorer. This would probably
count as a bit of context I guess.

Fair enough. However, the lack of a graphical tool for visualizing some
of the branching concepts is, IMO, significant.

For cheap branches… I’m not sure either. It has always boggled my
mind why people are so upset when two files have to be duplicated. One
system that really does cheap branching well is git. Only a single
file with a few characters is created for each branch (initially,
changes are added of course). I’d love to hear from others who know
more about this.

My issue is more with centralised backup of changes. At work we back up
a single machine and catch all of the committed changes. We’re not yet
using cheap developer branches, but as we start using the absolute raw
power behind Perforce, you better believe we will.

I also expect to be looking at p4proxy for use at home with the work
server so that I can (hopefully) work disconnected without too much
trouble. I have to see how well that works.

Yes. I know I lean far to the DDSCM side of things and I don’t intend
to hide it. I think the quality of this reply made up for the
originally open claims. Though, I would like to ask, out of all the
problems you mention, none of them really give a benchmark that could
be used to note if a DDSCM would be ready under your definitions, are
there any specific things that could be fixed or done to make your
trust in a DDSCM system more likely? Or is DDSCM, for some reason,
mutually exclusive with what you get out of your current SCM usage?

It’s the auxiliary tools and the centralized source for knowing what’s
going on with the source tree that matters to me. Patchset management is
possible with Perforce, although I can’t tell you exactly how you’d do
it – I haven’t tried.

Give me a way to work with Perforce without constantly being connected
and I’ll absolutely use it. But a DDSCM has to give me tools –
including GUI tools – at least as good as and preferably better than
what Subversion gives me as well as an assurance that I will be able to
back everything up, then I will consider it. It also has to deal with
the reality that I develop on a lot of different platforms, including
Windows.

-austin