Jump to content
LCVG

Best Free Version Control Software


foogledricks
 Share

Recommended Posts

I use sourcesafe at work. And am really getting an itch to have my own source control at home. Something small, simple, and free. There seem to be a lot of options out there. I don't want to go through the trouble of downloading, setting up, and finding out that various software is difficult, complex, and/or impossible to set up. I figured I'd get your opinions first.

 

Any ideas?

Link to comment
Share on other sites

Perforce for the win. It's got a free evaluation version for two users with no expiration - basically, it's free for home use on a small scale. I've never set up the server though the client rocks. I much prefer it to the open source CVS, but Perforce may be overkill for your needs. CVS is functional and definitely works, but it's open source with all the fun that brings with regards to setting it up & administrating the server (which I have done).

Link to comment
Share on other sites

We made the switch from Sourcesafe to Subversion (SVN) a few years back at work, and it's been awesome. I haven't actually set up the server, but I don't think it was that difficult to do, and you can also import your entire sourcesafe repository and change history into SVN if you want to keep it around. I do know that using TortoiseSVN on the desktop is really simple, and there are also IDE plugins for Visual Studio and Eclipse out there if you want them. If it's just for home use though, SVN might be overkill. I've never actually heard of perforce-I might check that out. The only other benefit to setting up SVN or CVS at home is to get some exposure to them, which is something else you can put on the resume if you want.

 

Seriously though, you should see if you can switch off of SourceSafe at work-that platform just sucks.

Link to comment
Share on other sites

I've made the switch from CVS (~2 years) to SVN (~5 years) to Git (~6 months). I cannot stress enough how much better Git is than every other system I've used. Here's how you convert an existing directory into a Git repository:

git init
git add .
git commit -m "Initial commit"

No server setup. You now have a local full version control repo.

 

There's no TortoiseGit yet, so Perforce free may beat it there for ease-of-use for personal stuff on Windows. But Git's combination of a directed acyclic graph for storage (as opposed to nearly every other VCS which uses delta snapshots) and a solid distributed model makes it revolutionary.

 

I remember when SVN came on the scene the big feature it touted was "cheap branching". Just copy the files, and you've got a branch! Well as it turned out cheap branching is only half of the equation or less. Branches are useless without good merging, which is where SVN completely falls apart - if you've ever tried to maintain and merge a complex branch structure in SVN (or track an upstream vendor), you know that it's a total nightmare; SVN loses important history during the merge and doesn't record what versions of what branches were merged, forcing you to track all this manually. Merging in Git makes it all look like SVN has just been playing a trick on you for years to waste your time. A side effect of good merging is that branching is legitimately cheap; you can branch for every small feature or idea because you don't have to worry about the merge nightmare.

Link to comment
Share on other sites

Well if we changed at work, it would have to have good automation for importing, exporting, checking in, checking out, deleting, etc... stuff in the system. I've developed a tool that checks stuff out, does a bunch of processing, checks it back in, and I do that by shelling to sourcesafe via the command line. It kinda sucks actually, but it works. I would need at least the same amount of control for work purposes.

 

For personal, I just need version control for my ASP.net site.

Link to comment
Share on other sites

Well if we changed at work, it would have to have good automation for importing, exporting, checking in, checking out, deleting, etc... stuff in the system. I've developed a tool that checks stuff out, does a bunch of processing, checks it back in, and I do that by shelling to sourcesafe via the command line. It kinda sucks actually, but it works. I would need at least the same amount of control for work purposes.

 

All modern version control systems have options for that kind of automation and usually far better methods than SS. SourceSafe really is over the hill. Changing version control /is/ a big change though so I totally understand why people are still using it.

Link to comment
Share on other sites

I tried out Perforce at lunch. I was a little disorienting. Because it is very different from SS. The terminology. The paradigm. I was like "How the heck do I import files?" "Where is the checkout button" "What the hell is the 'submit' function?"

 

It kind of bothers me that you have to 'submit' your actions. Reminds me of Lotus Notes where you send emails and then later you sync where it "Really" sends the emails. I don't like the asynchronous approach at all. Seems like something you might do if you're working remotely and don't want to waste time talking to the server. But that is not my situation at all.

 

That being said. I get the feeling that anything other than SS is going to be very different since SS is so friggin old. I really hate it but I'm used to it. I'll be trying out others if they're free. And I'll go back and give Perforce a closer look when I get home.

Link to comment
Share on other sites

It kind of bothers me that you have to 'submit' your actions. Reminds me of Lotus Notes where you send emails and then later you sync where it "Really" sends the emails. I don't like the asynchronous approach at all. Seems like something you might do if you're working remotely and don't want to waste time talking to the server. But that is not my situation at all.

It's been so long since I've used SourceSafe that I don't even remember how they do it. I don't mind this (Perforce) approach at all...it leaves me room for "Oops, I did not really want to be in this file after all, I am taking a different approach, I want to revert like I was never here without leaving a history." I also like being able to sort checked out files into separate changelists so I can do a submit back for certain files only. I hope that made sense.

Link to comment
Share on other sites

That being said. I get the feeling that anything other than SS is going to be very different since SS is so friggin old. I really hate it but I'm used to it. I'll be trying out others if they're free. And I'll go back and give Perforce a closer look when I get home.

 

You've nailed it here - the paradigms for interacting with version control have changed dramatically compared to sourcesafe. I know the first time I used CVS after using SS for 4 years at DMA I freaked at the totally different terminology & the whole concept of people being able to happily change files without checking them out first.

Link to comment
Share on other sites

I know the first time I used CVS after using SS for 4 years at DMA I freaked at the totally different terminology & the whole concept of people being able to happily change files without checking them out first

 

Yeah, I had the same problem with the move to SVN. Once I got the hang of it though, it got much easier to maintain multiple source branches and merge changes across them. I've also found that the more atomic the commit, the better. It makes it much easier to remove a change later on, and probably helps minimize the number of conflicts to resolve when you merge. What I'd really like to see added is support for merging other formats (.docx especially). We keep a lot of design docs in SVN, and it'd be nice to have simultaneous edit on them.

 

If you're still using Sourcesafe and want to stay Microsoft, you could go all the way to the Team Foundation Server. MS completely redid their source control, and from what I've seen in demos there are some cool features. There was one demo at PDC that showed how a checkin would trigger a new build, and then how the checkin would be rejected if it broke any of the unit tests or if anything failed to build.

 

Of course, TFS has the significant disadvantage of being far from free...

Link to comment
Share on other sites

Yeah, I had the same problem with the move to SVN. Once I got the hang of it though, it got much easier to maintain multiple source branches and merge changes across them. I've also found that the more atomic the commit, the better. It makes it much easier to remove a change later on, and probably helps minimize the number of conflicts to resolve when you merge.
You haven't seen easy branching and merging until you've seen the kind of completely non-linear development a DVCS allows. Seriously, once you've tried it and gotten used to it, it makes any software project easier to work on.
What I'd really like to see added is support for merging other formats (.docx especially). We keep a lot of design docs in SVN, and it'd be nice to have simultaneous edit on them.

IIRC, docx and odt just use zipped XML. You should be able to version the uncompressed files and it would work fine (or at least better) - not sure if you would have to manually unzip/rezip before each comit/edit, or if the editor would detect the uncompressed format on first-open and preserve it. Might be worth looking into though.

Link to comment
Share on other sites

IIRC, docx and odt just use zipped XML. You should be able to version the uncompressed files and it would work fine (or at least better) - not sure if you would have to manually unzip/rezip before each comit/edit, or if the editor would detect the uncompressed format on first-open and preserve it. Might be worth looking into though.

 

Yup, if you take any of the new formats and change the extensions, you can unzip them and edit the XML. This is why I figured it'd be at least possible to write an extension to SVN or something that could handle the unzip/merge/rezip. You'd also have to add new files that are embedded in the document (images etc) that show up in the archive. Not a trivial thing by any means, but not as hard as it'd be for a straight binary format.

Link to comment
Share on other sites

It really depends on what environment you're working in. For a simple one man thing git or mercurial are probably the most powerful since the work with local repositories. Otherwise as far as free goes it seems like most of the dev world is using subversion with a remote or local repository. Most hosting services will supply you with a svn repository which is what I'm currently using for my iphone development but I keep thinking about switching to git.

 

PS I can't believe people are still using sourcesafe. Last time I used that was at a startup in 99-00 and it was horrible to deal with. One label per revision and frequent corruptions made for a lot of non-fun.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...