Search code examples
svnversion-controltortoisesvnrepositoryrevision

Alternative to SVN with native Windows support


I've been using TortoiseSVN on my development machine so far, and I find there are certain shortcomings. I use Total Commander as a file manager, and I found myself often removing or moving folders inside a workspace. Because I use standard file system operations invoked by Total Commander, and not those provided by TortoiseSVN, this often corrupts the workspace and I'm unable to commit to the repository.

Is there any free alternative, which installs driver/service to monitor the file system operations so it can correctly log these operations, thus not corrupting the workspace? Alternatively, is there a source control software which do not have these shortcomings at all?

Edit

Rename handling in SVN/Git/Mercurial

Handling renames: svn vs. git vs. mercurial
Renaming in Git and Mercurial: Accuracy and automaticity

Git handles renames completely automatically, Mercurial is able to auto-discover renames using explicit command, and SVN doesn't handle renames at all.

Another relatively important difference is that if for any reason Mercurial does not detect file rename, it stores the file in repository anyway, thus duplicating the content. Git never duplicates content regardless if it detects file rename.

Automatic rename handling for Mercurial

Here are two extensions allowing to add Git-like automatic rename handling for Mercurial:

https://bitbucket.org/jammycakes/autorename/downloads
https://bitbucket.org/cbarrett/guess-renames/downloads (source)

Comparison of Mercurial and Git

What is the Difference Between Mercurial and Git?
Git vs. Mercurial: Please Relax
The Differences Between Mercurial and Git
Google Analysis of Git and Mercurial
Git, Hg or Bzr — Which to recommend to a new user?
SCM choice for a new user?
Git, Mercurial and Bazaar – A Comparison
Git and Mercurial - Compare and Contrast
Distributed Version Control Systems (Interesting feature comparison, although quite old)

Getting started with Mercurial

Hg Init: a Mercurial tutorial
Video tutorial

Git tools

Besines the already mentioned Git Extenesions, Git Source Control Provider is really useful Visual Studio extension for Git. TortoiseGit is an alternative for Git Extensions, but according to my testings, Git Extensions is more user friendly, with neat user interface. Working with submodules in Git Extensions is also much better.


Solution

  • git automatically detects files that have been moved. However, there are many other reasons to preferring git to SVN - first and foremost, git is a distributed version control system, which brings many benefits over centralized systems such as SVN. For instance, you can commit locally without having to immediately upload changes to the central repo (which means that you can commit more often (thus running a smaller risk of messing something up) because you are not required to have something that works 100% before you commit it), and working with branches is a breeze. On the downside, the learning curve is steeper than with many other source control systems, and getting used to git when coming from SVN might take a while.

    If you want to try git on windows, I recommend gitextensions.