Version control system for distributed developers team - version-control

Distributed developer team requires version control system that allows Internet access and nicely integrated with Visual Studio.
Please, share your experience. What system will you personally choose?

Given that you're in the Microsoft world and given that you are most likely looking at something like DVCS due to the distributed team, between Git and Mercurial, I'd go with Mercurial as it has a bit nicer support for Microsoft.
The downside is that integration with Studio is just not there (there are some third party options, but none that I have personally worked with).
On the flip side, TFS can (semi) work remote, but is really not strong if you're just doing internet access vs. being on a VPN, etc. (and even with the VPN it can be slow... we once had to deal with a TFS server on a different continent). Although I would not be suprised if MS comes out with a DVCS due to their popularity down the road.

There's no option ;) Give a try to Plastic SCM specially if you need to be distributed inside Visual Studio!
It is free for up to 15 users and it covers all the basics and not so basics:
Distributed
Excellent branching and merging (full merge tracking, rename support and so on)
Graphical (check the branch explorer!)
Included XDiff and XMerge (support for refactors inside merge, the only tool on the market able to do it!)
Very good VStudio support...

SVN with tortoiseSVN and VisualSVN (or RocketSVN, or Ankh) is a good and cheap option!
TFS works, but is expensive and can be rather painful.
Hg (Mercurial) is very good, but not yet so nicely integrated with VS.

Related

What version control use if I'm the only developer?

I want to use some version control for my projects, but I'm the only developer, there is not others. I want to use my pendrive like repository because I develop in many different places(but the same project).
I only worked with SVN, but in that case, was not good, I think an DVCS was better.
But now, I really don't know what to use, if SVN is the best option. I've looked for another solutions like Mercurial, Git, and Fossil, but I don't understand the differences, and mainly, if they are the best options for my situation.
I need to know what is best in this case.
If you're the only developer, then the best version control is the one that you are most comfortable with. The goal of version control is to make your life as a developer easier and safer, so there's no point in fighting with a version control that you don't know.
However, if you want to learn how to use a new version control system, this is a great opportunity.
If you think that you're going to have more developers working on this project later, then you want to think about a robust solution like SVN.
I would definitely recommend Git. It is a little cryptic at times, but it seems to be/become the de-facto standard for most open source projects. It's very powerful and it'll enable you to work with the great service that is Github :)
There are good topics on SO that compare Git, Mercurial, svn, etc.
What is the Difference Between Mercurial and Git?
To me an important requirement was easy, free, private repositories online so I started to use http://Bitbucket.org They support both Mercurial and Git.
+1 to #dudemonkey sentences. Except last - tastes can differ. Even as sole developer, you can (and have) use best techniques - i.e you may have non-linear development (thus - branching|merging), refactoring of code, different targets. Try and select best for you solution.
Nobody mentioned Fossil SCM - small, portable app in one exe, with all basic features of DVCS, integrated Wiki and tickets - which you can have (with repo) in USB, for example for max mobility
In first place stay away from SVN or any other CVCS, they suck. To learn more about DVCS, I recommend the Eric Sink's Book, it's free: http://www.ericsink.com/vcbe/
As you plan to work on different machines, the best solution would be to have an online repository, I think it's more pratical and safer than the pendrive. Some of the most known out there are: https://bitbucket.org/, https://github.com/, https://launchpad.net/, http://code.google.com/projecthosting/. Remember that with a DVCS you don't need to be online all the time, you can commit locally and push to the server later. If your project is not open source, you should stick with BitBucket as it's the only one that offers free hosting for closed source projects.
If you really want to work just in the pendrive, don't leave the repository just in the pendrive. It's safer to clone the repository from the pen drive to the machines you will work. Then you Push/Pull to the pen drive's repository to synchronize.

fastest SCM tool available for Embedded software development

In my company, presently we are using Rational clearcase as the Software Configuration Management tool for our Embedded software development. The software is basically for Automobiles, to be specific for Engines (I dont think these information really matters).
But I find Clearcase to be very slow is performing any the activities (accesing files, branching and labelling), in addition to which there are various other limitations.
We have recently decided to research on some free & open source, distributed version control system which could be able to handle our large projects with speed and efficiency. This tool should be a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. It should have multisite development facility.
With these above mentioned requirement, we have come up with some of the tools that are presently available in the market:
GIT, Mercurial, Bazaar, Subversion, CVS, Perforce, and Visual SourceSafe.
I need everybody's help in finding me an approrpiate SCM tool for me which meets the above mentioned requirements.
Thanking you in Advance,
Rahamath.
Mercurial or Git are the most popular Distributed Version Control Systems. I believe Git has the speed advantage, particularly in committing, branching and merging. Furthermore, its merging algorithm is the best I've yet come across; most merges can be handled automatically without user input.
From my own experience, I would recommend Git without hesitation were it not for its very steep learning curve. However, I believe much of this is due to the paradigm shift when switching to a DVCS, such as getting the hang of pushing and pulling, the way repositories become decentralised.
Subversion, CVS, Perforce and SourceSafe are not distributed; furthermore, Perforce and SourceSafe are neither free nor open source. CVS is all but obsolete, with Subversion being its natural successor, so I wouldn't consider it any further.
If you want something "not dependent on network access or a central server", then the centralised SCMs from your list (Subversion, CVS, p4) have to go.
If you want cross platform, then I think Visual Source Safe would have to go.
Also, you mentioned Open Source, that kicks out p4 and Visual Source Safe.
CVS is quite old and if you're planning to use that, you'd best ignore it and use SVN instead.
Git is something that you can add to the list but it's support on windows is not as good as that of bzr and mercurial.
I use git myself but I develop exclusively on Gnu/Linux and so can't comment on windows support. Also, it's a bit quirky but once you get used to it can be really powerful. There is a learning curve problem so you might have to spend some time training your team on the tool.
Bzr, I don't know. When I last touched it, it had repository format issues and was horribly slow. It's much better now but I was scarred by my first exposure.
Hg is sweet and works fine on windows and Gnu/Linux but since I've used git quite heavily, I miss some of it's features on hg.
We are using ClearCase (with its advantages and pain points), and we are considering DVCS.
Right now, we are introducing Git, both on Windows (msysgit) and on a "central" Solaris server, which does met our needs in term of merging, and in term of distribution (for offshore-development)
But we have to setup "central" repositories for the developers to use as reference, and for that we had to use gitolite (the pu branch) for its fine-grained access level (repo, branch, directory access per user or per group, ldap-based)
The integration with Eclipse is in progress, and we are confident on the support level since all Eclipse projects have switched from CVS to Git (so they are committed to support it).
Mercurial has been considered and can certainly offer the same level of features, but has a much complex branching model.
Git has no extension to install. It just works (with a learning curve we manage to keep at a reasonable level through my user support services)
At work we are actually on ClearCase too and not satisfied for the some reasons... Very slow to update big projects (particularly if not local network)...
We (not me) benchmarked some products and Mercurial was choosen to be the future solution used.

What OSX/XCode version control system should I use for iPhone development?

I've been developing my first iPhone app part-time and would like to start using a more rigorous form of version control than I've been using over the past four months, i.e. copying source code folders to another directory and time stamping them.
I've used SourceSafe and Team Foundation System but I don't have a good idea of what version control systems (VCS) are available for the Macintosh. I've seen ads on SO for a Subversion front end but would like some other options.
Here's a list of my initial requirements:
Runs locally under OS X Leopard 10.5.7
Integrates with XCode 3.1.3 (if no integration, user-friendly interface)
Basic VCS features - check-in comments, branching, pinning
Advanced VCS features like build automation or reports would be nice but not critical at this time
Ability to handle multiple developers down the road (6-12 months)
Thanks in advance for the help.
Mercurial would be my pick for version control for a project starting as a solo project if you don't want to set up a dedicated server. Mercurial requires no server because it's a distributed VCS, every working copy is also a complete repository, so once you've installed Mercurial you are ready to go, just type 'hg init' in the root directory of your project and you're off.
It's perfect for working alone or with a small number of developers (i.e. no IT staff or sysadmins available), it has a utility that lets you quickly set up a temporary server for your local repository so when you meet up with people it's easy for them to clone the repository or share changes. You can also just give people copies of your repository over email or USB key or copy them over the network or whatever and reconcile changes to the copies against each other later.
For me Mercurial made the difference between actually using a VCS for personal projects and just giving up because it's too much trouble. Setting up a Subversion server locally isn't a huge deal but it's still enough trouble to make me not bother, and if you really want to be thorough you'd want to think about how to do proper backups, etc. With Mercurial at any point you can just back up your working copy to other media and you have a backup. I don't know if this really makes sense but Mercurial is a VCS that you can use casually and informally thanks to the distributed nature.
No Xcode integration, but having used various VCS' with and without integration I don't think it's very important as long as good clients are available. These days I've mostly settled on just going command line and it's refreshing.
Perforce, IMO, is right out. Aside from being a commercial product it is obnoxious beyond belief. It requires you to be connected to a server at all times or things become a major pain in the ass. So if you just want to work on stuff from multiple machines in multiple locations or if you want to have people on the project that won't be on the same network all the time it's going to suck. Perforce just constantly beats you over the head with the fact you are using Perforce, no other VCS I've used is so in your face and annoying.
Git is another option with a similar feature set to Mercurial that might be worth looking at. In my case I also do Windows stuff and Git's Windows support is supposedly crap so I went with something that works on all my platforms.
Build automation IMO is the build server's job, not the VCS' job, so if you want build automation find an appropriate build server.
SVN or Subversion is included with Xcode and is well integrated with it. As you grow to have bigger needs, you can use third-party Subversion servers and use the same SVN support over the network. If you don't like SVN, I think XCode supports CVS too.
If you're looking for something adequate, cheap, and expandable, then just mosey on over to the SCM menu of XCode, and check out what's already there. If you need help setting up SVN, just comment.
IT looks like subversion would be your best choice for XCode as there is already some guidence on getting that up and running with XCode here. Subversion addresses all of the features you are speaking of. Pinning specifically is a feature of Source Safe; however subversion can do tagging. Build automation is not a feature of a source control system, but source control systems are typically used in continuous integration server scenarios. I have not used it but from what I understand Hudson is a continuous integration Server which is gaining popularity and momemtum. You can find more information on Hudson here and here
SubVersioN (SVN) fulfills (most of) your requirements.
I'd also put in a vote for subversion since XCode supports it natively. I've been using it myself and have been very happy.
However I'd question your requirement to run the server locally. Sure, you can do that no problems with subversion. But wouldn't you be nervous about your hard disk failing?
I've been using Beanstalk to host my source code. It's free for up to 3 developers, you'll be able to upgrade your account once you grow, its fast and it's SAFE.
I just looked in Xcode (3.2, though, so it may not be exactly the same) and the options for source control integration are subversion, CVS and perforce.
Outside of Xcode, there are a couple of very nice GUI clients for subversion for OS X.
Subversion would be a good place to start, it seems.
All the cool kids are using distributed VCSes these days, apparently. You might want to spend half an hour reading up on git or mercurial (hg - my preference). There's no direct integration with Xcode, but they're easy enough to get into.
Perforce is now free for up to twenty users, but will be expensive after that. You might want to check it out, however. Xcode no longer supports native Perforce integration, though there are scripts and a plugin.

What source control should we use

I am looking for a good source control solution. Here are the requirements:
Must have a GUI or have an available GUI plug-in.
Must be free.
Must work with HTTP.
What source control would you choose?
BACKGROUND
Our .Net development team is part of a large parent company. We're in the process of acquiring VS Team System, however the bureaucracy of a large company moves slowly and it could be months before we have a Team System server up and running. In the meantime, we have a large project that will be outsourced to a vendor in India. In the past, our team's process has been something like this: 1)specify the requirements, 2)let the Indian team create the solution, and 3) receive the solution back from the vendor a month later.
We're looking for a more disciplined approach and Team System is our long term solution, however I'd like to use something right now instead of nothing.
Here are some of my thoughts:
Source Safe is a no-go, because of stability issues.
Ease of use is more important than advanced features, like branching and I'd really, really want it to use a GUI versus command lines.
HTTP access is a must, because the development team will be remote.
Additional Information as a follow up to feedback so far
We need a free solution, not because we can't afford it, but because the company's corporate purchasing policies will delay getting it. Free enables us to install at any time. I suppose that if it were cheap enough, I could pay out of my own pocket, but it would have to be pretty cheap.
Final
Sadly, we did not end up using any of the recommendations. We did finally obtain a TFS license, however we're not expected to have clearance to use the server until next year. In the interim, the offshore team is uploaded zip files onto an ftp server. Ugggghh! Why is it so hard to convince large companies that it's ok to use non-standard solutions (such as GIT) rather than wait months (or years) as they dither on trying to decide whether or not a purchase (in this case TFS) is worth it.
I recommend Subversion and TortoiseSVN. Even the documentation for Subversion is free.
Edited to add:
I also strongly recommend VisualSVN Server to setup your SVN repository. The setup was a snap and its been so trouble free I had to go look to see what it was called because I haven't had to touch it once since the initial set-up.
Think about a distributed system: darcs, git, or mercurial. They all have their adherents, but operationally they're much similar. darcs can take a long time to build, because it's written in Haskell, and you end up needing to build Haskell first. Mercurial is python based, easy to hack with and extend. And of course git is what's used for Linux, very widely available, lots of tools.
Subversion is, I think, pretty much the baseline of modern SCM; it would be a good choice too, but it does force you into having a fixed central server; either you, or your Indian collegues, will have to check out and commit over a long pipe.
Subversion (SVN) is obviously a popular choice. It's also quite commonly used now (Google Code, Sourceforge, etc.) so there should be lots of documentation out there about its use. Git is a good choice too, but the lack of GUI interfaces available makes it not fit your requirements so well.
I'm assuming since you're using .NET you're developing in a Windows environment primarily. Check out VisualSVN products. They make a great (FREE) Server product for actually running a full fledged svn server in a windows environment (it supports SSL, group/user authentication including Active Directory support).
They also offer a Visual Studio plugin, although it is not free (although quite reasonable at $49/developer). AnkhSvn is another Visual Studio client plugin option. It's not quite as great, but it is free.
http://www.visualsvn.com/server/ - Free Windows SVN Server
http://www.visualsvn.com/visualsvn/ - Visual Studio Client Plugin
http://ankhsvn.open.collab.net/ - Free Visual Studio Client Plugin
So, I think Subversion using VisualSVN's product offerings are going to give you the best windows/gui integration at a very reasonable price.
SVN sucks quite badly over HTTP in my experience. You will want to pull your hair out if your repo is of any significant size especially with a Trans-Atlantic round trip stuffed in there. Personally I'd go with Mercurial.
Google has recently done some research on Git versus Mercurial. The largest advantage that Mercurial had was that it played extremely well with HTTP.
TortoiseHg, while not quite as mature as TortoiseSVN, is a pretty solid Windows GUI. Although you mentioned you're not very interested in branching and merging, these are common activities in all DVCS. Fortunately because they are common, they are well supported in the UI and relatively painless activities overall.
Check out Subversion: http://subversion.tigris.org/
Has GUI plugin as well VS .NET. http://tortoisesvn.tigris.org/ http://ankhsvn.open.collab.net/
All open source & free.
My recomendation is Subversion + TortoiseSVN (for Explorer integration) + AnkhSVN (integration with Visual Studio).
I think you shouldn't use any of the distributet version control systems because after that you will have to get back to centralized one which could be painful.
As mentioned SVN and Tortoise are the way to go.
I'd also get a license for visual SVN (http://www.visualsvn.com/) it's not free but it is really good, it uses Tortoise svn and gives you it's features in the IDE.
Team Foundation Server is quite easy to use and is easy to get started with coming from a source safe background (shares common terminology for commands). However with part of the development being in India, they may be more knowledgeable about Subversion.
If you use Subversion, i would look at VisualSVN. It's fantastic, simple to use, and quick to set up (TFS is a bit complicated to set up). VisualSVN offers an IDE plug-in ($50) and a server counterpart that bootstraps Subversion for windows machines (Free)
Mercurial is great and really easy.
Give Mercurial a shot. BitBucket has free accounts you can play around with. I've written more about why I use it here.
Have you tried SVN and using TortoiseSVN for the Shell Extension?
I second SVN and TortoiseSVN.
I moved from CVS and WinCVS and I am very happy with this setup.
I would recommend the source control where most of your team members have the most experience or where you have someone on your team who is an expert for.
In my opinion besides the endless "git is better than Subversion is better than CVS"-discussion I don't think the differences between them is what matters.
It's more important to have someone who really knows how to use whichever system you decide to use.
Setting up Subversion for .Net development has gotten easier. You could start by installing Visual SVN Server. This will install Subversion Server on a windows machine, will work you through setting up your repository, authentication, etc.
Then for Visual Studio integration with Subversion you can try VisualSVN, it's not free but well worth the license. But if your budget don't allow it, Ankhsvn also works fine, I use it everyday.
I had to make a similar decision several months back. I liked SVN a lot, but the lack of GUI for the administration was a big issue for my team. TFS was ideal, but very expensive.
We decided to meet halfway and license SourceGear Vault. It doesn't meet your requirement of "free," unfortunately. Although I did find its comparison with SVN to be interesting.
If you're certain you're going to Team System, then I believe there's a 180-day trial you can use. That way, you son't have to switch.
Have you tried unfuddle (http://unfuddle.com/). Fulfills all your requirements.
Another vote for SVN.
For a lightweight SVN server on windows look at sliksvn. It doesn't do http source browsing, but is a much smaller and easier setup than apache based servers for small groups.

Alternative to VSS for a one man show (army of one?)

I've been programming for 10+ years now for the same employer and only source code control we've ever used is VSS. (Sorry - That's what they had when I started). There's only ever been a few of us; two right now and we usually work alone, so VSS has worked ok for us. So, I have two questions: 1) Should we switch to something else like subversion, git, TFS, etc what exactly and why (please)? 2) Am I beyond all hope and destined to eternal damnation because VSS has corrupted me (as Jeff says) ?
Wow - thanks for all the great responses!
It sounds like I should clearify a few things. We are a MS shop (Gold parntner) and we mostly do VB, ASP.NET, SQL Server, sharepoint & Biztalk work. I have CS degree so I've done x86 assembly C, C++ on DEC Unix and Slackware Linux in a "time out of mind" ...
My concern with VSS is that now I'm working over a VPN a lot more and VSS's performance sux and I'm afraid that our 10+ y/o version 5 VSS database is going to get hoosed...
There's the LAN service that's supposed to speed things up, but Ive never used it and I'm not sure it helps with corruption - has anyone used the VSS LAN service? (new with VSS 2005)
I'd probably go with Subversion, if I were you. I'm a total Git fanatic at this point, but Subversion certainly has some advantages:
simplicity
abundance of interoperable tools
active and supportive community
portable
Has really nice Windows shell integration
integrates with visual studio (I think - but surely through a third party)
Git has many, many other advantages, but the above tend to be the ones people care about when asking general questions like the above.
Edit: the company I now work for is using VisualSVN server, which is free. It makes setting up a Subversion repository on a Windows server stupid simple, and on the client we're using TortoiseSVN (for shell integration) and AnkhSVN for Visual Studio support. It's quite good, and should be fairly easy for even VSS users to pick up.
Latter-day Edit: So....nearly eight years later, I would never recommend Subversion to anyone for any reason. I don't really recant, per se, because I think my advice was valid at the time. However, in 2016, Subversion retains almost none of the advantages it used to have over Git. The tooling for Git is superior to (and much more diverse) what it once was, and in particular, there's GitHub and other good Git hosting providers (BitBucket, Beanstalk, Visual Studio Online, just off the top of my head). Visual Studio now has Git support out-of-the-box, and it's actually pretty good. There are even PowerShell modules to give a more native Windows experience to denizens of the console. Git is even easier to set up and use than Subversion and doesn't require a server component. Git has become as ubiquitous as any single tool can be, and you really would only be cheating yourself to not use it (unless you just really want to use something not-Git). Don't misunderstand - this isn't me hating on Subversion, but rather me recognizing that it's a tool from another time, rather like a straight razor for shaving.
Looks like SubVersion is the winner here. I'd do yourself a favor and use VisualSVN Server. It's free and will save you a bunch of installation headaches.
If you're used to the way VSS works, check out (no pun intended) Sourcegear's vault. It's an excellent way to migrate away from VSS as it comes with IDE integration and supports check out / check in, but when you're ready and feel comfortable you can also move to the edit update commit style of programming found in SVN.
It's free for single developers, runs on IIS and is built on .net so it should be a fairly familiar stack for you to switch to.
Whatever you do, don't change for the sake of changing.
If it's working for you and you're not having problems with it, I don't see any reason to switch.
For what it's worth, Perforce is a potential option if you truly stick to 1 or 2 users. Current perforce docs says you have have 2 users and 5 clients without having to start purchasing licenses.
You might have reasons to switch to perforce depending on your workflow and if you have need of branching the way perforce does it. Not being overly familar with some the other products mentioned here, I can't tell you how perforce compares in the feature department for things like branching, etc.
It is speedy, and it's been rock solid for us (300+ developers on a 10+ year old codebase). We store several T of info and it's been quite responsive. With a small number of users, I doubt that you'd experience many performance troubles assuming you had good hardware for your server.
Having used VSS before, I believe that you can get so many benefits out of a better SCM system that switching should be considered regardless of whether you have corruption or not. Branching alone might be worth it for you. A true client/server model, better interfaces (programmatically and command line) are a couple of other things that could really help just improve your workflow and help somewhat with productivity.
In summary, my view of Perforce is:
It's fast and quite reliable
Plenty of cross platform client tools (windows, unix, mac, etc)
it's free for 2 users and 5 clients
Integrates into developer studio (and other tools)
Has a powerful branching system (that might or might not be right for you).
Has several scriptable interfaces (python, perl, ruby, C++)
Certainly YMMV -- I only offer this alternative up as something that might be worthwhile looking into.
I've recently started using Mercurial for some of my work. It's a distributed system like Git but seems easier to use and seems far better supported on Windows, the latter of which was crucial for me.
With distributed source code control every user has a complete local copy of the repository. If you're the only person working on a project, as you say you often are, this can simplify things a lot since you just create your own repository and do all your commits etc. locally. If you want to bring on other developers later you can just push the full contents of your repository - current versions and all history - to another system, either on a shared server or directly on to another users' workstation.
If you're working only with a local repository remember you'll need a also backup solution as there isn't a copy of all your code on a shared server.
I think that Mercurial has lots of other advantages over Subversion, but it does have a big downside which has already been mentioned as a plus point of Subversion: there a lots of third party tools and integrations for Subversion. As Mercurial hasn't been around nearly as ong the choice is much less. On Windows it seems that you either have to use the command line (my choice) or the TortoiseHg Windows Explorer integration.
VSS is horrible. I may be channelling Spolsky (not sure if he's said this), but using VSS is actually worse than not using source control at all. Despite its name, it isn't safe. It creates the illusion of safety without providing it.
Without VSS, you'd probably be making regular backups of your code. With VSS, you'll think, "Mehh, it's already under source control. Why bother backing up?" Great until it corrupts your entire codebase and you lose everything. (This, incidentally, happened at a company I worked at.)
Get rid of VSS as soon as you can and switch to a real source control solution.
Don't worry about VSS corrupting you, worry about VSS corrupting your data. It does not have a good track record in that department.
Back up frequently if you do not switch to a different version control system. Backups should be happening daily even with other SCMs, but it's doubly important with VSS.
I like using Subversion for my personal projects. I could go down the list of features and pretend like it brings a lot to the table that other source control systems don't, but there's tons of good ones out there and the right choices is really a matter of style. If you check in after each small change (i.e. one checkin per function change), then many people can work on the same source file with very low risk of merge conflicts in practically anything but VSS (I haven't used VSS in years but from what I remember only one person at a time can work on a file.) If this isn't ever going to happen to you, I feel like the best course of action is to use what you know. VSS is better than no source control at all, but it feels restrictive to me these days.
I don't think you're beyond hope because you're asking if it would be better to switch; you're beyond hope when the answer is obvious and you ignore the evidence.
Even if you don't change source control systems, you ought to pick one like SVN or git and spend a few weeks reading about it and making a small project using it; it always helps to sharpen the saw.
I don't agree with the people that say that if you don't have problems you'd better not switch.
I think that SCM is some of the disciplines a good developer should know well, and frankly, even if you master VSS you are just experimenting a small fraction of the advantages a good SCM tool and SCM strategy can do for you and for your team.
Obviously evaluate and test the alternatives first in a non-production environment.
At work we use subversion with TortoiseSVN - works very nicely but it is philosophically different to VSS (not really a problem if there's just you but worth being aware of). I really like the fact that the whole repository has a revision number.
Given a free choice I'd've probably gone with vault but at the time I had zero budget.
I'm looking at things for personal use. There are reasons to use subversion and reasons to use something completely different. The alternatives I'm considering are Vault (as before, free for single use) and Bazaar. GIT I've had to dismiss as I am, unashamedly, a Windows person and right now GIT just isn't.
The distributed nature of GIT and the option of private/temporary checkins (assuming I've understood what I've read) is attractive - hence my looking at Bazaar.
Update: I did some more digging and playing and I actually went for Mercurial for personal use, integrated install with TortoiseHg makes things very simple and it seems to be well regarded. I'm still trying to work out how to force an automagic mirror of commits to a server and there appear to be some minor limitations to the ignore function but its doing the job nicely so far...
Murph
I'd say stick with what works for you. Unless you are having issues with VSS, why switch? Subversion is swell, though a little sticky to begin using it. TFS is far better than VSS, though it is fairly expensive for such a small team. I have not used git so I can't really speak to it.
i used vss for years until switching to svn about two years ago. my biggest complaints about vss were the poor network performance (that problem may be solved now) and the pessimistic locking of files. svn solved both those, is easy to set up (i use collabnet server and tortoisesvn client, although there are two good visual studio plugins: visualsvn - commercial, and ankhsvn - open source), easy to use and administer, and well documented.
it's tempting to say "if it's not broken then don't fix it" but you would get to learn a more modern source control tool and, perhaps more importantly, new ways of using source control (e.g. more frequent branching and merging) that the new tool would support.
If you only have 2 people, and you mostly work independantly, git is going to give you a lot more flexibility, power, and be far and away the fastest to work with.
It is however a pain in the backside to use. Using VSS you're obviously programming for windows - if you're doing Win32 API stuff in C then git will be a learning curve but will be quite interesting.
If the depths of your knowledge however only extend to ASP and Visual Basic, just use subversion. Walk before you can run.
** I'm not trying to say if you only know VB you're dumb or anything like that, but that git can be very finicky and picky to use (if you've used the WinAPI in C you know all about picky and finicky), and you may want a more gradual introduction to SCM than git provides
If you are a one man show and strictly a Microsoft shop, then SourceGear Vault is definitely a prime candidate for switching too.
Features:
Free for Single User, great for you
It uses SQL Server for it's backend, therefore data reliability is huge
It has atomic check-ins, all files checked-in at the same time are arranged in a group and are called a changeset.
VisualStudio integration.
Has a tool for importing from SourceSafe, therefore you can keep your history
The client communicates with the server over HTTP, therefore accessing the source outside the office remotely can be setup very easily and performs well, because they only transfer the deltas of the changes being submitted and received. You can use SSL to secure the connection.
I would definately consider this as an option.
If you want a full Life Cycle in one package then you probably want want to look at Visual Studio Team System. It does require a server, but you can get a "Action Pack" from MS that includes all the licencies that you need for "Team Foundation Server Workgroup Edition" from the Partner centre.
With this you will get Bug, Risk and Issue tracking as well as many other features :)
Source Control
Work Item Tracking (Requirements, Bugs, Issues, Risks and Tasks)
Reporting on your project data (Work Item Tracking, Build, Checkins and more in one qube)
Code Analysis
Unit Testing
Load Testing
Performance Analysis
Automated Build