| 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. |
|