Comparison between Git

Back to main page

   
SCM feature: Git Add to comparison: +CVS
+AccuRev
+Aegis
+AllChange
+Arch
+Bazaar
+BitKeeper
+ClearCase
+CM+
+CMSynergy
+Co-Op
+Darcs
+LibreSource Synchronizer
+Mercurial
+Monotone
+OpenCM
+Perforce
+PureCM
+SourceAnywhere
+Subversion
+Superversion
+Surround SCM
+svk
+Team Foundation Server
+Vesta
+Visual SourceSafe
Atomic Commits
Yes. Commits are atomic.
Files and Directories Moves or Renames
Renames are supported for most practical purposes. Git even detects renames when a file has been changed afterward the rename. However, due to a peculiar repository structure, renames are not recorded explicitly, and Git has to deduce them (which works well in practice).
Intelligent Merging after Moves or Renames
No. As detailed in the Git FAQ: "Git has a rename command git mv, but that is just a convenience. The effect is indistinguishable from removing the file and adding another with different name and the same content."
File and Directories Copies
No. Copies are not supported.
Remote Repository Replication
Yes. This is very intrinsic feature of Git.
Propagating Changes to Parent Repositories
Yes. (The Linux kernel development process uses this extremely often).
Repository Permissions
No, but a single server can serve many repositories. Also, UNIX permissions can be used to some extent.
Changesets' Support
Yes, Changesets are supported, and there's some flexibility in creating them.
Tracking Line-wise File History
Yes. (git blame).
Ability to Work only on One Directory of the Repository
No. However, commits could be restricted somewhat, see the "Repository Permissions".
Tracking Uncommited Changes
Yes. Also, branches are very lightweight in Git, and could be considered a kind of storage for "uncommitted" code in some workflows.
Per-File Commit Messages
No. Commit messages are per changeset.
Documentation
Medium. The short help is too terse and obscure. The man pages are extensive, but tend to be confusing. The are many tutorials.
Ease of Deployment
Good. Binary packages are available for modern platforms. C compiler and Perl are required. Requires cygwin on Windows, and has some UNIXisms.
Command Set
Command set is very feature-rich, and not compatible with CVS.
Networking Support
Excellent. Can use native Git protocol, but works over rsync, ssh, HTTP and HTTPS also.
Portability
The client works on most UNIXes, but not on native MS-Windows. The cygwin build seems to be workable, though.
Web Interface
Yes. Gitweb is included in distribution.
Availability of Graphical User-Interfaces.
Gitk is included in distribution. Qgit and Git-gui tools are also available.
 


Information taken from Better SCM Initiative website by Shlomi Fish (shlomif@iglu.org.il).

Reorganized for usability by Alexey Mahotkin (Version Control Blog) in 2008.

 

Creative Commons License
This work is licensed under a Creative Commons License.