This guide is aimed at CVS users who want to know more about the new features in Subversion, but it is also useful for someone familiar with source control systems who wants to find out what Subversion offers. Mike Mason is talking about the philosophy and design behind Subversion, how it improves upon CVS, and how to get started using it.
I switched about 6 months ago. I love the system functionality, but hate that the repository can’t be directly inspected and manipulated via the filesystem as was possible with CVS. The “everything in the DB” approach has pluses and minuses IMHO.
That’s something that makes me curious every time I hear it. Why would anyone *want* to “manipulate” a version control system, circumventing its API?
I’ve heard of CVS admins who did so to circumvent shortcomings in CVS – but that’s like, being given a new car that works just fine, and then saying “I liked my 1968 Dodge – it was slow and broke down every 5 miles, but I was able to fix it myself.”
What would you want that manual editing capability for?
If CVS didn’t screw things up, you wouldn’t have to mess with the repository. Oh, and if it supported renames, moves, etc.
I had to tweak my CVS repository last night because it appears to not set the user properly on files added/modified over ssh…
I’ve been meaning to give Subversion a good look, but I haven’t had the time yet.
– chrish
I have been using SVN now for a full week, despite the current more or less buggy client situation SVN is an excellent system, a worthy replacement for CVS.
Over ten years, I’ve needed that ability several times. The last time was to remove all traces of a checkin that contained material that we didn’t have a license to include.
Would it be fair to say that you needed to remove all traces of the illegitimate code via the filesystem so that someone else couldn’t find those traces again the same way? If so, then this would appear to be a liability of CVS that doesn’t exist in Subversion (assuming Subversion can remove all traces of a checkin).
Having to totally wipe the traces of something is one of the problems that subversion still has to solve before it can be used in the development of big and long closed source projects. Luckily open source projects don’t (or shouldn’t) need to remove offending code. IIRC the subversion project is working on this. I just can’t find the URL right now.
[quote]Over ten years, I’ve needed that ability several times. The last time was to remove all traces of a checkin that contained material that we didn’t have a license to include.[/quote]
svnadmin rmtxns
Next example please? I’m certain that eventually someone will come up with an situation which the Subversion command line utilities will be unable to resolve, but between svnadmin and svnlook there really should be no need to manipulate the repository at the filesystem level.
Meanwhile, CVS *requires* that you manipulate the repository at the filesystem level in order to do something as simple as remove a directory from the repository (unless you want to force everyone checking out the repository to use cvs -P)
Honestly though, how do you expect them to implement repository-wide revisioning/atomic commits with a “flat file” backend? RCS allowed this in CVS by only revisioning files, which made it a bitch to move files within the repository while preserving revisioning, and completely prevented any revisions on directories. A central data store which tracks the entire repository is really necessary if you’re revisioning repository wide (otherwise you have to worry about portions of the repository going out of sync) and the Subversion implementers chose to start with db4, although anyone is free to implement whatever backend they choose… it’s completely modular.
If you plan to use Subversion, keep in mind that it’s using the GPL incompatible Apache license. This means that Subversion cannot be used in conjunction with any GPL licensed code whatsoever without being in violation of the GPL.
If you’re looking for a truly GNU free software revision control system, you should check out GNU Arch. It’s a wonderful utility that doesn’t get a lot of attention here at OSnews or on /. but in many ways deserves more attention than Subversion because it’s likely to be what Linus Torvalds switches to when he finally decides to move away from BitKeeper:
http://www.gnu.org/software/gnu-arch/
Hi
“f you plan to use Subversion, keep in mind that it’s using the GPL incompatible Apache license. This means that Subversion cannot be used in conjunction with any GPL licensed code whatsoever without being in violation of the GPL. ”
wrong. you are not linking your project to subversion. why should any kind of incompatibility arise. please quote the specific clause in gpl that i would be violating
Jess
If you plan to use Subversion, keep in mind that it’s using the GPL incompatible Apache license. This means that Subversion cannot be used in conjunction with any GPL licensed code whatsoever without being in violation of the GPL.
Fortunately everything Subversion is built on or used in conjunction with (i.e. Apache, BerkeleyDB, libneon) are all either Apache, BSD, or LGPL licensed. What GPL tools do you need to use in conjunction with Subversion? Any GPL programs which need to link with libsvn can simply include an exemption clause for linking with libsvn.
If you’re looking for a truly GNU free software revision control system, you should check out GNU Arch. It’s a wonderful utility that doesn’t get a lot of attention here at OSnews or on /.
Oh please, can the GNU Arch zealots let one Subversion article go by without touting Arch in the comments? I would consider GNU Arch as soon as it has:
A Windows Explorer snap-in like http://tortoisesvn.tigris.org/
A VS.NET snap in like http://ankhsvn.tigris.org/
Arch treats Windows like a third class citizen, with an unstable and untested native Windows port of the CLI utilities, or expecting you to run the whole thing through Cygwin. For those of us developing projects which prefer to have first class Windows support, Arch simply isn’t a suitable choice.
but in many ways [Arch] deserves more attention than Subversion because it’s likely to be what Linus Torvalds switches to when he finally decides to move away from BitKeeper
1. Who says Linus is even planning to move away from BitKeeper?
2. If Linus does move away from BitKeeper, why must he necessarily use Arch? Because it’s licensed under the GPL?
3. Perhaps, sometime a few years in the future, if Linus does decide to move away from BitKeeper, he might consider Subversion in addition to Arch. GNU wholeheartedly condones the use of “non-copyleft free software”, and uses it themselves (e.g. http://www.gnu.org is running Apache/1.3.26). Why wouldn’t Linus consider Subversion for the Linux kernel’s RCS, a few years down the road when it (as well as Arch) are both more featureful? As is neither Subversion nor Arch are a particularly compelling replacement for BitKeeper…
Hi
“GNU wholeheartedly condones the use of “non-copyleft free software””
it doesnt condone non copyleft software. it calls them free software and warns that such software might have to fight with proprietary counterparts created out of themself. it has happened several times before. someone can pull out bsd code add some proprietary stuff and say hey my stuff is much better. this cannot happen with gpl because it based on a commons and you will have to share the code if you distribute it. plain and simple
Jess
Hi
“Arch treats Windows like a third class citizen, with an unstable and untested native Windows port of the CLI utilities, or expecting you to run the whole thing through Cygwin. For those of us developing projects which prefer to have first class Windows support, Arch simply isn’t a suitable choice. ”
gnu arch is for free software systems which need a SCM. if you are using windows you can as well as use bitkeeper or clearcase. dont ridicule a product because it isnt targetted at your needs. he had a right to mention gnu arch as a competitor to subversion. it has superiror distributed architecture and stuff. its just that his licensing concern is not valid.
regards
Jess
it doesnt condone non copyleft software.
You’re missing about half the qualifiers from my original statement. I said that GNU condones the use of non-copyleft free software.
Read here:
http://www.gnu.org/philosophy/license-list.html
The Apache License, Version 1.1.
This is a permissive non-copyleft free software license with a few requirements that render it incompatible with the GNU GPL.
We urge you not to use the Apache licenses for software you write. However, there is no reason to avoid running programs that have been released under this license, such as Apache.
So yes, GNU says there is no reason not to use programs with a non-copyleft free software license.
gnu arch is for free software systems which need a SCM. if you are using windows you can as well as use bitkeeper or clearcase. dont ridicule a product because it isnt targetted at your needs.
I was making a case for why Subversion is attractive for Windows developers, and Arch is not, as Arch zealots insist on touting Arch in every Subversion related article on OSnews. As long as they continue to zealously proclaim the merits of their system in response to an article on a rival one, I will continue to tell them why Subversion fits my needs and Arch does not.
Subversion alone fits my needs as a Windows developer, so why would I pay for an RCS when there is a free one available?
he had a right to mention gnu arch as a competitor to subversion. it has superiror distributed architecture and stuff. its just that his licensing concern is not valid.
So he has the right to make a post about a disparate, unrelated RCS but I don’t have a right to respond with my reasoning for choosing Subversion? Sounds like you have something of a double standard…
Hi
“So he has the right to make a post about a disparate, unrelated RCS but I don’t have a right to respond with my reasoning for choosing Subversion? Sounds like you have something of a double standard…”
what are you talking about?
nobody told you not to use subversion. he is talking about competition. let him. whats your problem with that?
why is that zealotry?
he likes it. he promotes it. his license concern is invalid and gnu didnt say you shouldnt run non copyleft programs. so whats the problem with them?
Because on the comments of every story *someone* feels the need to mention Arch, just like on virtually every story about MySQL or Postgres someone feels the need to mention Firebird.
Check the past track record of Arch zealots on Subversion-related stories:
http://osnews.com/comment.php?news_id=6124
http://osnews.com/comment.php?news_id=6094
http://osnews.com/comment.php?news_id=5473
It’s annoying, as if Arch zealots can’t let a Subversion related article go by without touting their RCS of choice…
One of the main arguments for Arch, licensing aside, seems to be its distributed nature. This is also possible with Subversion: have a look at SVK:
http://svk.elixus.org/
You want to talk annoying, how come every thread has to have the word “zealot” in it in at least one posting. From what I can tell, it now just means, this person bothers me so I want to discredit them.
And to make it worse, it seems to be spreading to other tech related news articles. Noooo, must gouge eyes out! I can’t look at it anymore.
Sorry, go ahead and mod this down. I’ve been needing to vent that for awhile now.
Subversion releases under the Apache license. That’s basically “it comes for free and should remain so, please mention Collab Net since they payed for it, don’t use our name to advertise your product, and please don’t mention Tigris.”
It’s their code, it’s their decision, and I don’t see anything wrong with it.
But up steps some person and claims that you “cannot use it in conjunction with GPL’ed code”. FUD of the worst kind, just the same kind of bull that Microsoft is spreading, only the other way round: wrong, misleading, and confusing the user away from a perfectly good product.
Propaganda like this makes me sick. You’re hurting your own cause. Live and let live, ever heard of the concept? Why on earth must everybody conform to your (or the FSF’s) standards? Who made you god, damnit?
(OK, OK, this will be mod’ed down, but as long as I get this garbage on stdin, my stdout isn’t likely to change. Just 2>&1 >/dev/null…)