Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quick comparison of TortoiseHg/Mercurial <=> TortoiseGit <=> TortoiseSvn/Subversion [closed]

What are the differences between the following three free Version Management Tools? Which one is the best for a small 2-5 people project? What criteria would you take into account?

  • TortoiseSVN / Subversion
  • TortoiseHg / Mercurial
  • TortoiseGit / Git

I know there are more features which would be possible using the commandline - but in this question I only want to consider the features I can access using the frontend possibilities / TortoiseXXX offered without commandline usage.
That is the reason why I don't consider that question as a duplicate to Git vs Mercurial vs SVN

like image 675
Michael Hutter Avatar asked Dec 23 '22 05:12

Michael Hutter


1 Answers

During the last years I used all three Version Management Systems (TortoiseSVN, TortoiseHg, TortoiseGit) and tested them thoroughly. Here is my conclusion:

TortoiseSVN / Subversion (SVN)

Advantages:

  • Possibility to check out only a part/subfolder of the complete repository
  • Revision comments and revision username can be changed at a later time without changing/influencing any checksum or revision ident number.
  • Possibility to check-in empty folder (structures)

Disadvantages:

  • No distributed version management System (you always need to have connection to the server-repo)
  • The last checked-in revision cannot be changed / amended / rolled back

TortoiseHG / Mercurial (HG)

Advantages:

  • Distributed version management system
  • Renaming of files can be defined manually as well as detected automatically (in a special dialog => algorithm: similarity check of file content)
  • In TortoiseHg-Workbench all revision trees are displayed (contrary to Git)
  • There are revision numbers as well as revision checksums ("Hash") available (easier orientation for humans than e. g. in Git!)
  • Newest version still runs in Windows XP
  • Before pulling from or pushing to another Repo it is possible to review the affected revisions (and abort the action if necessary)
  • Shelve is a ingenious function to save several (unrevisioned) changes temporarily (in that way neither in SVN nor in Git ("Stash") available)
  • There is no annoying distinction between bare and non-bare repositories (in contrast to Git) -> Sending of revisions to partner repo is possible even in checked-out state, because only the history of the partner repo is affected (in contrast to Git)
  • TortoiseHg installs a "Workbench" automatically
  • The history can easily be changed using the Extension "mq" - wrong check-ins or branches don't have to stay in the repo forever but can be deleted - but be careful: this will lead to different checksums and therefore to new branches in cloned repos...
  • Short learning curve
  • Simple installation without many questions, consumes less than 100MB of hard disk space
  • Idiot safe - with standard installation it is not easy to destroy a repo

Disadvantages:

  • It is not possible to check out and commit single folders into the repo (if you have a big repo and want to have only a small part of it)
  • It is not possible to check-in empty folders / folder structures

TortoiseGit / Git

Advantages:

  • Widespread (many people use it)
  • Distributed version management system
  • History can be changed/rebuilt (single revisions can be deleted/changed)
  • SVN-Repositories can be imported
  • It is possible to send single branches to another Bare-Repo (or be imported from another Repo) => Way of thinking in "Heads"

Disadvantages:

  • Renaming of files/folders cannot be influenced! This type of info is not stored within the repo and is re-detected every time the repo is viewed. Sometimes the algorithm ends up in a wrong result.
  • Before pulling changes out of a partner repo it is not possible to review the imported revisions before pulling them. A comparison of two repos seems only to be possible in a optical(!) way
  • Sending revisions can only be done into a bare-repository (in HG this problem doesn't exist)
  • There are not "human-readable" revision numbers - only a SHA-1-Hash => orientation problems in a Repo!!
  • TortoiseGit has no Workbench by default (Handling only possible via context menu respectively multiple open windows or by terminal)
  • Function "Stash" is not so powerful and clear like function "Shelf" in Mercurial/Hg
  • Rebuilding of a repo leaves data remnants in the file system - if you accidentally check-in a huge file you won't get it out and shrink your repo easily!
  • It is not possible to check-in empty folders / folder structures
  • Using the annotate function the coloring of the individual changes in a file are dangerously deceptive! Different changes which were done within a small timespan are colored only slightly different!!!
  • If a file was changed in revision X and in Revision X+5 and you look which changes were made in Revision X+5, then the compare tool will show the revisions X+4 and X+5 in the headline. Better would be to show revisions X and X+5! => Gapless change history not possible in that way!
  • Revision comments can be done afterwards, but will not be pushed/pulled into partner repos. So they might get lost eventually :-(
  • You have to install two different software packages (Git + TortoiseGit). Together they consume more than 600 MB of your hard disc
  • It is quite easy to destroy a Repo with "the wrong click" - keep enough Backups if you want to stay happy...
  • Relatively hard learning curve - you need more time to get along with the functions

Conclusion

Although I first was biased against TortoiseHg I had to reluctantly admit that it is the system with the most advantages.
For myself I decided to use TortoiseHg / Mercurial after about 3 years of comparing.

like image 182
Michael Hutter Avatar answered Dec 26 '22 11:12

Michael Hutter