Anyone have any suggestions on where to start for a newbie wanting to try out some sort of source-control along with a new journey into ASP.NET? SVN, VSS, CVS...I dont even know where to start!
Eric Sink's Source Control HOWTO.
Read it, then download Subversion (free) or Vault (free for a single user) and start playing around with it.
Very Subversion specific but it gives a decent understanding of version control basics.
If you are just getting started, I would recommend reading through the free Subversion book. It is a widely-used system, free, and should be relatively easy to comprehend once you get going.
If you're 100% .NET, and you have an MSDN developer license, run TFS for Workgroups. Its pretty simple and solid.
If you don't have a license, check out Subversion. Its a nice, free source control that has plugins for Visual Studio integration.
just make sure you stay the hell away from visual source safe.
I first got introduced to svn using tortoise svn, loved it and later a company used Visual Sourcesafe, how I missed using tortoise.
Have to second reading the Subversion book. Plus, the software is free, runs on most environments, and is easy to get going.
I think the easiest way is to get a free SVN server through some free provider. I use assembla.
Then, if you are in Windows, you should download TortoiseSVN. That is by far the easiest Subversion client to use.
Start by importing a current project into the repository and then you are ready to go.
I reccomend SVN to start off with, bit easier to get the hang of than some others.
Tortoise is a good start. It's simple to install and integrates with the windows shell, meaning everything is fairly intuitive on Right-clicks on folders / files etc. Pretty good doc as well.
You will also need a SVN server / host to connet to... I can reccomend Assembla which is free to register with and gives you a SVN server to play with.
In my opinion if you already have Viual Source Safe and you are a single developer doing work with VS, it is perfectly fine. Its a simple system that works well enough for small single developer projects. I have used it for years without any trouble for small projects. Easy to manage and backup as well.
I believe that strating point is with Distributed version control system (like mercurial or git). There are some advandtages of using it :
- You don't need to setup central repository (it rquires tedious server setup)
- You can share changesets (revisions) with your friends by using email or other method, and integrate changes to your repository safely.
- You can modify revision history (rebase, git supports it) easilly, what is impossible to do with SVN.
I will recommend Subversion or Visual Studio Team Foundation Systems depending on how much money you are willing to shell out.
Check out Visual SVN (Subversion for die-hard VS fans) - it integrates nicely with Visual Studio: http://www.visualsvn.com/
What source control to use really depends on your environment, your corporate culture and the general situation of how projects are handled in your company. The newer "Visual Source Safe" in Team Foundation is hands down better than the piece of crud that VSS used to be. and is good in a Microsoft shop with one or few locations. I've also used Subversion very successfully, and it integrates well into Eclipse. I don't like to put down products, since all have their positive and negative points, I guess. But the two I mentioned above are really good source/version control products. If you are just getting started and want to get your feet wet and learn source control practices and general concepts, download an open source product like CVS or Subversion, load it up and try it out.
http://www.ericsink.com/scm/source_control.html has some good information to work with.
-- I am re-editing this comment to note that it looks like someone else linked to that source control link in a previous post. :) darn it, I wasn't the first to post it.
Just getting tools installed is not enough. You need to understand how the particular technology works (like SVN) and how the whole source tree supposed to work: best structure, tagging, branching, merging and so fourth. Since we use SVN I recommend Subversion Book. It has some good explanations of source control concepts.
I recommended trying on of the free distributed version control systems. Most of them are very easy to setup on your personal PC and come with good documentation. Here are my favourites 1. Bazaar 2. Mercurial 3. Git (only for *nix based systems as far as I know)
See a list here:
http://en.wikipedia.org/wiki/List_of_revision_control_software
Check out Subversion (SVN) to start. As suggested in other posts, there's an excellent free ebook that not only covers how to use SVN but is an excellent start on the concepts.
For an easy to setup server, check out the free server from VisualSVN.
If you use Visual Studio, you can use their add-in (costs) or the open source Ankh SVN addin. If you're using other IDEs, Tortoise SVN integrates with Explorer in Windows.
Lots of people here have suggested introductions and comprehensive how-tos, which are all good for telling you how to do what you want.
In addition, I'd give three pieces of advice for the novice on how to know what you want:
1) Version-control EVERYTHING (that is, everything you write).
Version-control the project files. Version-control your test cases. Version-control any little scripts you use to copy things around. Version-control your todo list. Definitely version control your design notes. Once you're familiar with the commands it costs nothing, and some day you'll be glad of the history of a file you'd never imagined needing to roll back.
2) When you're happy with a change, check it in immediately. And check it all in.
If you work in sequential steps (and that doesn't always happen - you can get distracted - but it's good practice), then at the start of each new step you should have 0 modified files in your checkout. You may even want to check in unfinished non-working code, depending on what suits you.
3) When you reach a milestone, tag it.
Even your own personal goals (inch-pebbles). If you can't be bothered with tagging, just make a note of the date and time (in, you guessed it, a version-controlled file). If a particular version is memorable for some reason ("I finished the back-end", "I sent it to someone else to look at"), you want to know exactly what was in it. And diffing against the repository diagnoses some kinds of bugs faster than the debugger.
Visual Source Safe (VSS) is fine for a beginner, because you won't know what you're missing. When you need something more complicated, then worry about getting some other product.
Nowadays I would just start with a distributed system. They are easier to set up (you don't need to set up a server and/or find one on-line: just init
some random directory and start doing your stuff) and just as easy/hard to understand as the centralized ones.
Here are a few that people should take a look when choosing a distributed revision control system:
If you're stuck in Windows, I would stay away from Git (at least for the time being). There seems to be support for Git on Windows in progress, but I haven't tried it yet.
Comments on products that I've used:
VSS - Haven't used it in a while now (several years), at the time it did the basics of what we wanted but we were running into a variety of issues regularly enough that we actively sought out a better solution. If you've got free access then it wouldn't hurt to get exposure to their implementation to see what was at the time a different way of dealing with the issues (they may have come into line with the rest of the products by now).
CVS - Used this at a previous company, and worked with the original author of tortoiseCVS so I'm a little biased perhaps in thinking that it was a decent open source solution. I'd recommend starting here personally, everythings easily available and widely used.
Perforce - Our companies current source control solution and pretty much universally well regarded on the team. A couple of alternative UI's that people can choose between and good command line support too (vital for tools interaction). If you're evaluating for a company I'd certainly include this in your list to look at.
Start with Subversion. The documentation is online, and the Pragmatic Programmers Svn book is great.
If you're on Windows you can also get TortoiseSvn (free) for explorer integration or VisualSvn (commercial) for Visual Studio integration. For the Mac, Versions looks like a nice stand alone client, and XCode 3 has svn integration built in. Still I'd spend a bit of time in the command line using the svn client to really figure out what you're doing.
After getting comfortable with the way svn works, then you can get into distributed version control systems like Git, Bazaar, or Mercurial, but I've seen enough professional developers have problems wrapping their heads around the basics of version control (branching merging etc) that I'd get comfortable with that first before moving to distributed systems.
Stay the hell away from Visual SourceSafe (VSS). It is poop. Your code is not safe. See these many links as to why not to use VSS.
Another vote for Subversion / TortoiseSVN but note that it doesn't play nicely with a FAT32 domestic NAS.