From: Jakub Narebski Date: Thu, 29 Nov 2007 02:26:12 GMT Subject: Re: Adding Git to Better SCM Initiative : Comparison Message-ID: <200711290326.13822.jnareb@gmail.com> In-Reply-To: <200711282339.59938.jnareb@gmail.com> Jakub Narebski wrote: > To do that, I need to fill in information about Git.  Most > of questions / items didn't give much problem, but there > are a few on which I would like your input. By the way, below is patch with the information I have filled. Check out the TO DO items. diff --git a/src/comparison/scm-comparison.xml b/src/comparison/scm-comparison.xml index b459747..6f84190 100644 --- a/src/comparison/scm-comparison.xml +++ b/src/comparison/scm-comparison.xml @@ -38,6 +38,9 @@ TODO: Darcs + + Git + Mercurial @@ -106,6 +109,7 @@ TODO: Commits are atomic. Commits are atomic. Yes (but need to verify) + Yes. Yes. Yes. Yes. Commits are atomic. @@ -142,6 +146,11 @@ TODO: Yes. Renames are supported. Yes. Renames are supported. Yes. Renames are supported. + + N/A. Git does not track renames, but detects renames + and copies. You can follow history of file using + 'git log --follow'. + Yes. Renames are supported. Yes. Renames are supported. Yes. Renames are supported @@ -214,6 +223,11 @@ TODO: Yes. Copies are supported. No. Copies are not supported. + + N/A. Git does not track copies, but detects renames + and copies. You can follow history of file using + 'git log -C --follow'. + Yes. Copies are supported Yes. Copies are supported No. Copies are not supported. @@ -267,6 +281,7 @@ TODO: Yes. Yes. Yes. + Yes. Yes. Yes. No. @@ -313,6 +328,7 @@ TODO: Yes. Yes. Yes. + Yes. Yes. Yes. No. @@ -373,6 +389,10 @@ TODO: Same as subversion. + + Partial (?). It is possible to lock down repository + (access to branches and tags) using hooks. + Yes. It is possible to lock down repositories, subdirectories, or files using hooks. @@ -455,6 +475,9 @@ TODO: Yes. Changesets are supported. + + Yes. Changesets are supported. + Yes. Changesets are supported. @@ -509,6 +532,7 @@ TODO: Not in the command line client, but ViewARCH, a web-interface for Arch, has it. Yes. (darcs annotate) + Yes. (git blame, git gui blame) Yes. (hg annotate) Yes, as of version 0.19. Yes. aeannotate @@ -570,6 +594,9 @@ TODO: whole. No. All changes are made repository-wide. + + No. All changes are made repository-wide. + But you can use submodules / subrpoject support for that. It is possible to commit changes only in a subset of the tree. There are plans for partial checkouts. @@ -636,6 +663,10 @@ TODO: Yes, using "darcs whatsnew". Yes. Using aediff + + Yes. Using git diff. + Note that git uses staging area for commits (index). + Yes. Using hg diff. Yes. In a similar fashion to CVS. Yes. Using cm diff @@ -681,6 +712,10 @@ TODO: No. + + No. But you can tag (with description) given contents + of a file (blob). + No. @@ -782,6 +817,15 @@ TODO: and the client contains a help tool that offers an integrated help system. + + Medium. There's Git User's Manual, manpages, some + technical documentation and some howtos. All + documentation is also available online in HTML format; + there is additional information (including beginnings + of FAQ) on git wiki. + Nevertheles one of complaints in surveys is insufficient + or fragmented documentation. + Very good. There's an overview and tutorial on the web site, and integrated help for every command. @@ -894,6 +938,14 @@ TODO: to install the subversion perl bindings and a few modules from CPAN. + + TO DO. RPMs and deb packages for Linux. msysGit and + Cygwin for Win32 - Git requires POSIX shell, Perl, + and POSIX utilities for some commands (builtin). + Autoconf to generate Makefile configuration; ready + generic configuration for many OS. Compiling docs + requires asciidoc and xmlto toolchain, but prebuild. + Excellent. Binary packages are available for all popular platforms. Building from source requires @@ -1006,6 +1058,13 @@ TODO: but since the model is different most commands are unique. + + TO DO. + Tries to follow CVS conventions, but deviates where there + is a different design. + Large command set divided into plumbing (low lewel, to be + used in scripts) and porcelain (high level). + Tries to follow CVS conventions, but deviates where there is a different design. @@ -1106,6 +1165,10 @@ TODO: There exists some HTTP-functionality, but it is quite limited. + + Good. Uses HTTPS (with WebDAV) or ssh for push, + HTTP, FTP, ssh or custom protocol for fetch. + Excellent. Uses HTTP or ssh. Remote access also works safely without locks over read-only network @@ -1203,6 +1266,10 @@ TODO: Very good. Supports many UNIXes, Mac OS X, and Windows, and is written in a portable language. + TO DO. + Good. Portable across all POSIX systems. + There exists Win32 binary using MinGW. + Excellent. Runs on all platforms supported by Python. Repositories are portable across CPU @@ -1300,6 +1367,9 @@ TODO: is included in the distribution. Yes. + + Yes. The web interface is a bundled component. + Other web interfaces: cgit, wit, git-php Yes. The web interface is a bundled component. No. No. @@ -1373,6 +1443,11 @@ TODO: There is tkaegis. + RO DO + Bundled history viewer gitk and commit tool git-gui, + both use Tcl/Tk. There is also qgit (Qt) and Giggle + (GTK+). + History viewing available with hgit extension; check-in extension (hgct) makes committing easier. @@ -1453,6 +1528,7 @@ TODO: GNU GPL (open-source) Perl License. (open source) + GNU GPL (open source) GNU GPL (open source) GNU GPL (open source) -- Jakub Narebski Poland