A project I'm working on just shoved me over the threshold from RCS to SVN -- I just have to track multiple branches on this one.
But I'm not a version control maven, I'm a @#$% algorithm guy!
Any good SVN "How To's" out there? If O'Reilly has a book I'll probably buy it, but a good web-based one that's on the dips**t level (if you want to do "A" then type "B") would be nice in the mean time.
If you're running Windows, grab yourself a copy of TortoiseSVN. The documentation's pretty good, and more importantly, as software it's got a very high "it just works" factor.
On an unrelated note, the same author's StExBar is one of the things that makes life under Windows livable.
--
Rob Gaddi, Highland Technology
Email address is currently out of order
I'll second that. One client strongly urged me to use SVN as well so I installed Tortoise. Haven't used it in a long time so I forgot most of it by now but it sure ranks as a "it just works" software. Because I am an analog dude and can get rather impatient when some software doesn't budge.
The smoothness of being on their file server when I needed docs was amazing, and that's roughly 6000 miles from here.
I found the main online docs - the "Version Control with Subversion" book - pretty good.
You might also want to look at git. Blindingly fast, compact and efficient. It is reputedly very good at managing branches and merges, even better than svn. No need to setup a server, each copy is its own repository. Several projects I am familiar with have switched from svn to git recently (as have I, after using svn for a few years).
Having said that I think you are on windows, where svn could have better tools. Not sure.
You're best choice here is . It's the full subversion manual, written by the people that wrote subversion. You can buy the book (easy to read in an armchair in front of the fire, and supporting the project financially), and you can read the latest version for free online.
The main website has a faq, and lots of useful links.
Definitely recommended.
That looks like a nice utility. Normally I avoid such "toolbar" type gadgets, especially anything that plugs into explorer (since a mistake can really screw up windows). But in this case, I know the author knows what he is doing after using Tortoise for ages.
svn does not require a server. Specify your repository as file:///
IMO a major flaw in the way many Windows people think is that they will run svn in client-fileserver mode (using file:/// as mentioned above on a shared volume) rather than client-svnserver.
In client-fileserver every user must have full permissions on the repository, including the metadata. IMO this is asking for trouble, especially if there are multiple simultaneous users.
Tim, I'll be the nay sayer here. I didn't like TortoiseSVN but maybe for reasons that don't matter to you. We use SmartSVN because I find it more similar to Visual SourceSafe. Compared to Tortoise which is an explorer integration only (unless it has changed), SmartSVN is both an integration and a stand alone app. I find it quite user friendly.
On the minus side, SmartSVN isn't free. You can do a trial for free, but a license is under $100.
One other note on SVN itself. If branches are your primary interest, make sure to follow their recommended (read "required") layouts, i.e., everything project has its root in \trunk, with parallel \tags and \branch. I find this terribly inconvenient for our project format so we don't use it, and consequently, can not uses tags or branches.
What, just because I don't spell it "Windoze" or "Micro$oft" you think I'm on Windows? It's a mixed-religion household, with both Linux and Windows boxes (mine are all Linux).
The server is on a Linux box, but the primary users are on Vista.
Not sure that is the case, although I could be wrong. I thought you could organise your repository directory structure in any way you like - when you branch/tag you just have to provide the path to where the branch/tag is to be stored.
SVN does not draw any distinction between branches and tags, so using different directories for each allows some organisation to be maintained. You can have as many directories and sub directories under the \tags and \branch paths as you like.
I don't miss having a standalone app to deal with svn under Windows. And I REALLY don't miss VSS.
ut a
ake
ing
d
That comment about "required" layouts is not true. The recommended layouts are just that: recommendations. You can organize your repository in any way that makes sense to you. Under a project's root directory you can have multiple "branches" or "trunks" that are called whatever you wish.
The only distinction that TortoiseSVN makes is that if you check out something that is under a "tags" directory in the repo, TSVN marks the entire checkout as read-only in the local filesystem. This is its simplistic way of enforcing the gentlemen's agreement that tags are immutable.
This is, AFAIK, /exactly/ how MS Source Safe works - and is, AFAIK, the biggest single reason for its terrible reputation.
Using file:/// is good for a single developer on their own machine - it makes it easy to track changes and old code. But if you want to share the repository with others, then (as you say) you really ought to use a proper server. Both svnserve and webdav are easy to set up on a server.
git works by having a local copy of the repository (either all of it, or just the parts you are interested in). So you can do your work against your local copy, including check ins and check outs, and then later push some of your changes to a remote server for others to see. My understanding is that it is good at handling lots of variants in the code with different patches, and being decentralised makes it better for when you can't always be in close contact with a main server.
svn, on the other hand, is based on the idea of a central server that is the master and holds all the revisions. Most operations therefore need contact with the server. Since your revisions are all in one place, it is much easier to keep an overview - you have a mostly linear progression (branching and merging can be viewed as non-linear operations).
The two systems each have their place, and their advantages and disadvantages. git is ideal for the Linux kernel development model (oddly enough), while svn is normally a better match for a development team in one (or a few) location.
I don't know - I only know what I have read about git, having considered it for our own use. But I concluded that svn fitted our needs better, so there is a limit to my knowledge of its technical details. However, I'd guess that there is not much in the way of locking involved - anything with locks would have trouble scaling to fit the needs of the Linux kernel developers.
Hopefully someone else can give you a more qualified answer.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.