Why SVN?

T

Trans

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.
 
B

benjohn

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? :) I was expecting to find a SVN UI with the google I just did.
 
A

Aredridel

--=-cYHkKTK8zeAeUY7KZJCk
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
=20
Is it, really? I'm not trying to be combative, I'm just wondering =20
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

--=-cYHkKTK8zeAeUY7KZJCk
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBF9r70tP09exA3hooRAvHXAKDOx4t+acFxg5TGQKW3k+WetUE2yQCdEi6Z
yNHgHqpVdnVSXbepjDgxWTA=
=ws5K
-----END PGP SIGNATURE-----

--=-cYHkKTK8zeAeUY7KZJCk--
 
B

Brian Mitchell

Porcelain? :) 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. :)

Brian.
 
M

Martin DeMello

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
 
L

Lavanya Vanya

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
 
T

Trans

Hi,

In message "Re: Why SVN?"

|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.
 
A

Austin Ziegler

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
 
A

Austin Ziegler

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
 
B

Brian Mitchell

Yes.

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


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

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.
 
A

Austin Ziegler

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
 
B

Brian Mitchell

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. ;-)
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.
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).

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.
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).

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.
 
A

Austin Ziegler

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.

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
 
A

Adrian Howard

On 14 Mar 2007, at 20:46, Austin Ziegler wrote:
[snip]
Distributed systems fit very few development models.
[snip]

Not true in my experience. Every place I've worked in the last couple
of years has had to deal with developers that don't always have
online access to the repo, or are in locations where connectivity
sucks so badly to their home location that it might as well not exist.

In fact every place I've every worked ever has had those problems -
its just that we only had solutions recently :)

Don't get my wrong. I love Subversion. My home repo has been running
it for years and I'm in the process of moving $work over to it.

But I've been using SVK to as my primary client to access those
repositories for ages - and I wouldn't want to go back to not being
able to commit on the train :)

Cheers,

Adrian
 
T

Trans

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).

I have actually given that some thought. While not the case presently,
I think eventually this will become a mute point. Ultimately file
systems themselves will manage data redundancy. I think of it as
"holographic" memory. I don't know why exactly as it has nothing much
to do with actual holographs, but it sounds cool ;-)

For fun I started writing a version control system in Ruby just to get
a better understanding of the concepts. Turns out not to be so hard
really --at least for a simple model.

In any case, as far your advice. I'm taking it, but with Matz' twist.
My two main projects consist of many subprojects. I figure I can use
Subversion on the project as a whole, but Git on each subproject. Well
that's the theory. Let you know how it goes.

T.
 
C

Chad Perrin

I have actually given that some thought. While not the case presently,
I think eventually this will become a mute point. Ultimately file
systems themselves will manage data redundancy. I think of it as
"holographic" memory. I don't know why exactly as it has nothing much
to do with actual holographs, but it sounds cool ;-)

The term "holographic", in reference to data storage and similar
subjects, refers to a three dimensional indexing system. The term
"holographic memory" is already in use, generally involving
next-generation storage technologies that involve high density data
storage indexed three-dimensionally in photopolymers or crystalline
structures.

While I'm waxing pedantic, I may as well point out that the word you
wanted was probably "moot", not "mute".
 
T

Trans

The term "holographic", in reference to data storage and similar
subjects, refers to a three dimensional indexing system. The term
"holographic memory" is already in use, generally involving
next-generation storage technologies that involve high density data
storage indexed three-dimensionally in photopolymers or crystalline
structures.

Thanks. I'm aware. I'm using the term loosely, basically based on
concepts drawn from the book "The Holographic Universe" --the idea
that something thing can be in two different places at the same time.
I also view the the human brain something like holographic storage
using a form of reference and signal interference. In any case, I take
your point. I'm sure a better name already exists --I just don't know
what it is.
While I'm waxing pedantic, I may as well point out that the word you
wanted was probably "moot", not "mute".

Yep. I make that silly mistake all the time. But I'm a fan of Mark
Twain for more than one reason.

T.
 
A

Austin Ziegler

I have actually given that some thought. While not the case presently,
I think eventually this will become a mute point. Ultimately file
systems themselves will manage data redundancy. I think of it as
"holographic" memory. I don't know why exactly as it has nothing much
to do with actual holographs, but it sounds cool ;-)

As someone who works in the storage and backup industry, it will not
be a moot point.
For fun I started writing a version control system in Ruby just to get
a better understanding of the concepts. Turns out not to be so hard
really --at least for a simple model.

That's actually what people think; it isn't, in fact, as simple as
people think it is once you start scaling. Git works for Linux because
it fits that specific development model. Other systems generally have
to be more flexible.

-austin
 
T

Thomas Hafner

Tim Becker said:
working offline is, with the exception of maybe a short stint on a
plane or train, not that common nowadays.

Working offline is not the only situation where a distributed version
control system may be better. How about the following situation.

Developer A is working on a major task. He has already changed a lot
of software locally. Now A gets aware that he needs B doing some
modifications in some other modules where B is the real expert.
Neither A nor B can propagate his own changes solely, because that
would break the build for all other developers. This is a normal
branch situation, but the branch situation has been recognized very
late. In addition A and B have to work some more time on the common
task, which means that they have to interchange and synchronize their
software releases several times without disturbing the others.

In a distributed system A and B just pull from each other as often as
they need to get the task done. Full propagation (resp. integration,
in a central system) will follow then, but not earlier.

Regards
Thomas
 

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

No members online now.

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,197
Latest member
ScottChare

Latest Threads

Top