{"thread":{"id":"11052","subject":"Adding Git to Better SCM Initiative : Comparison","startedAt":"2007-11-28T22:39:59Z","lastAt":"2007-12-03T19:57:14Z","messageCount":11,"participants":["Jakub Narebski","Robin Rosenberg","Jan Hudec","Alex Riesen","Johan Herland"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"61307","messageId":"200711282339.59938.jnareb@gmail.com","threadId":"11052","inReplyTo":null,"subject":"Adding Git to Better SCM Initiative : Comparison","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-11-28T22:39:59Z","receivedAt":"2007-11-28T22:39:59Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"I'd like to add Git to comparison table of SCMs at Better SCM\nInitiative site:\n  http://better-scm.berlios.de\n\nTo do that, I need to fill in infomration about Git.  Most\nof questions / items didn't give much problem, but there\nare a few on which I would like your input.\n\n(Yes, I know that such SCM comparisons are usually biased towards the\nidea of what are most important features of a version control system.\nNevertheless...)\n\n\n1. Ease of Deployment\n\n   How easy it is to deploy the software? What are\n   the depenedencies and how can they be satisfied?\n\nThere are binary packages for Linux (RPM, deb) and for MS Windows\n(msysGit).  Git requires POSIX shell, Perl, and POSIX utilities\n(BTW. INSTALL file lacks full specification of dependences); although\nthere is ongoing effort towards making all commands builtin, in C.\nMakefile contains ready configuration for many OS, and there is\nautoconf script to generate Makefile configuration.\n\nI'm not sure if the problems with compiling documentation to HTML and\nmanpage forms, which require AsciiDoc and xmlto toolchains should be\nalso mentioned here.  Well, that and the fact that there exist\npre-build documentation in html and man forms.\n\n\n2. Command Set\n\n   What is the command set? How compatible it is with\n   the commands of CVS (the current open-source defacto\n   standard)?\n\nShould it be: \"Tries to follow CVS conventions, but deviates where\nthere is a different design.\", as for Mercurial and Monotone?\nIf I remember correctly command set is patterned somewhat after\nBitKeeper.\n\n\"Large command set divided into plumbing (low lewel, to be used in\n scripts) and porcelain (high level commands).\"\n\n\n3. Portability\n\n   How portable is the version-control system to various \n   operating systems, computer architectures, and other\n   types of systems?\n\n\"Good.  Portable across all POSIX systems.\n There exists Win32 binary using MinGW.\"\n\n>From the results of Git User's Surveys there are many OS on which Git\nis used; but it doesn't tell us how hard was to deply Git on those\nexotic operatings systems.\n\n\n4. Repository Permissions\n\n   Is it possible to define permissions on access to different\n   parts of a remote repository? Or is access open for all?\n\n\"Partial (?). It is possible to lock down repository\n (access to branches and tags) using hooks.\"\n\nI don't know if it is possible to do finer level ACLs, i.e. if it\nis possible to lock subdirectories or files in Git.  Although for\ndistributed SCMs ACL doesn't matter much: check diffstat and merge or\nnot from trusted people.  We have \"network of trust\" (BTW. Karl Fogel\nin OSSBook recommends 'soft' control of access control to repository,\non social rather than on technical level).\n\n\nP.S. How do \"svn diff\" looks like?\n-- \nJakub Narebski\nPoland\n"},{"id":"61353","messageId":"200711290248.23239.robin.rosenberg.lists@dewire.com","threadId":"11052","inReplyTo":"200711282339.59938.jnareb@gmail.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg.lists@dewire.com","sentAt":"2007-11-29T01:48:22Z","receivedAt":"2007-11-29T01:48:22Z","isPatch":false,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"onsdag 28 november 2007 skrev Jakub Narebski:\n> I'd like to add Git to comparison table of SCMs at Better SCM\n> Initiative site:\n>   http://better-scm.berlios.de\n> \n> To do that, I need to fill in infomration about Git.  Most\n> of questions / items didn't give much problem, but there\n> are a few on which I would like your input.\n> \n> (Yes, I know that such SCM comparisons are usually biased towards the\n> idea of what are most important features of a version control system.\n> Nevertheless...)\n[...]\n> 4. Repository Permissions\n> \n>    Is it possible to define permissions on access to different\n>    parts of a remote repository? Or is access open for all?\n> \n> \"Partial (?). It is possible to lock down repository\n>  (access to branches and tags) using hooks.\"\n> \n> I don't know if it is possible to do finer level ACLs, i.e. if it\n> is possible to lock subdirectories or files in Git.  Although for\n> distributed SCMs ACL doesn't matter much: check diffstat and merge or\n> not from trusted people.  We have \"network of trust\" (BTW. Karl Fogel\n> in OSSBook recommends 'soft' control of access control to repository,\n> on social rather than on technical level).\n\nI think what is most interesting here is access to content for which git has\njust about nothing worth mentioning, Just admit it. \"Truth in advertising\".\n\nI did start doing this so here's my version (pre-msysgit). Please try to bring up the defintion\nof \"atomic\" again with the author. I did complain a little but nothing happened. The issue is\nthat Clearcase is listed as having \"atomic\" commits which is not true for any usable definition\nof atomic in SCM context. With the definition in use there I think CVS should be considered\nhaving atomic commits too, at least I've never seen a half-committed file there.\n\n% svn diff\nIndex: src/comparison/scm-comparison.xml\n===================================================================\n--- src/comparison/scm-comparison.xml\t(revision 290)\n+++ src/comparison/scm-comparison.xml\t(arbetskopia)\n@@ -71,6 +71,9 @@\n             <impl id=\"ls-sync\">\n                 <name>LibreSource Synchronizer</name>\n             </impl>\n+            <impl id=\"git\">\n+                <name>Git</name>\n+            </impl>\n         </implementations>\n         <timestamp>\n             $Id$\n@@ -182,6 +185,13 @@\n                     needs to be up-to-date before doing a rename/move operation. \n                     This operation will be committed directly.\n                 </s>\n+                <s id=\"git\">\n+                    Yes (or no depending on interpretation). Git typically detects\n+\t\t    renames and copies based on content regardless of whether the\n+\t\t    committer indicated the fact. The detection is content based\n+\t\t    rather than file-id based. There is explicit rename too, but\n+\t\t    it is not used much.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"copy\">\n@@ -236,6 +246,10 @@\n                   limitations in Windows environments)\n                 </s>\n                 <s id=\"ls-sync\">No, copies will start there own history.</s>\n+                <s id=\"git\">Yes(or no depending on interpretation). Git detects\n+\t\t\tcopies and moves based on content. It does not track\n+\t\t\thistory on a file-id based scheme.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"repos_clone\">\n@@ -288,6 +302,11 @@\n                   Yes, but is not documented and its based on the dataflow feature of the\n                   LibreSource Synchronizer.\n                 </s>\n+                <s id=\"git\">\n+                  Yes. This is a fundamental part of using Git. A Git user typically always\n+\t\t  has a full copy of the entire repostory (well compressed) that is initialized\n+\t\t  using a clone command.\n+                </s>\n             </compare>\n         </section>\n         <section id=\"push\">\n@@ -331,6 +350,7 @@\n                 <s id=\"cmsynergy\">Yes, as long as you have the (more expensive) Distributed package.</s>\n                 <s id=\"clearcase\">Yes, using Clearcase Multisite.</s>\n                 <s id=\"ls-sync\">Yes, it's what we call a dataflow.</s>\n+                <s id=\"git\">Yes. This is a fundamental part of using Git.</s>\n             </compare>\n         </section>\n         <section id=\"permissions\">\n@@ -417,7 +437,8 @@\n                   multi-platform environments.\n                 </s>\n                 <s id=\"ls-sync\">Permissions are set for the whole repository or branch.</s>\n-            </compare>\n+                <s id=\"git\">No, but bad changes can be reverted before they are published.</s>\n+\t</compare>\n         </section>\n         <section id=\"changesets\">\n             <title>Changesets' Support</title>\n@@ -490,6 +511,11 @@\n                   Partial support. There are implicit changeset that are generated on\n                   each commit.\n                 </s>\n+            \t<s id=\"git\">Yes. Actually Git is snapshot based which means Git records\n+\t\t\tthe full state in every commit, which means that any two\n+\t\t\tcommits can be compared directly very quickly, although the\n+\t\t\trepository is typically browsed as a series of change sets.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"annotate\">\n@@ -534,6 +560,9 @@\n                     Yes locally without any server connection with the standard graphical\n                     Java client.\n                 </s>\n+            \t<s id=\"git\">Yes. It can also detect the origin of copied and moved source\n+\t\t\tlines.\n+                </s>\n            </compare>\n         </section>\n     </section>\n@@ -610,6 +639,12 @@\n                    It is possible to commit only a certain directory. However, one must\n                    check out the entire repository as a whole.\n                 </s>\n+            \t<s id=\"git\">No. However it is possible to commit only selected \n+\t\t\tchanges in the working tree rather than everything. Subproject\n+\t\t\tsupport makes it possible to split large projects into several\n+\t\t\trepositories and link them. Related repositories need not be\n+\t\t\tchecked out or cloned.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"tracking_uncommited_changes\">\n@@ -659,6 +694,10 @@\n                   Yes, with the Synchronizer Studio (default Java client) or with the\n                   standard diff command (diff -r . .so6/xxx/REFCOPY/)\n                 </s>\n+            \t<s id=\"git\">Yes. In addition commits are local and will not be seen\n+\t\t\tuntil he/she decides to publish them making it possible to\n+\t\t\ttrack multiple versions locally before publishing.\n+                </s>\n             </compare>\n         </section>\n         <section id=\"per_file_commit_messages\">\n@@ -714,6 +753,7 @@\n                   for a per-changeset message.\n                 </s>\n                 <s id=\"ls-sync\">No. Commit messages are per changeset.</s>\n+                <s id=\"git\">No. The same message applies the the commit as a whole.</s>\n            </compare>\n         </section>\n     </section>\n@@ -828,6 +868,11 @@\n                   documentation. Installing and getting started with the GUI is very easy\n                   though. (update/commit-next-next-next-finished)\n                 </s>\n+            \t<s id=\"git\">\n+\t\t  There a good tutorials manual pages and a supportive community.\n+\t\t  Basic usage is simple, but advanced usage requires understanding of\n+\t\t  what makes git different.\n+                </s>\n             </compare>\n         </section>\n         <section id=\"ease_of_deployment\">\n@@ -950,6 +995,10 @@\n                   LibreSource repository web page. \n                   (links: create workspace, update, commit, studio...)\n                 </s>\n+            \t<s id=\"git\">\n+\t\t  Very simple to deploy on Unix-like systems. Windows installs\n+\t\t  is not fully developed yet. Installing in cygwin is simple though.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"command_set\">\n@@ -1048,6 +1097,13 @@\n                   Basic commands available (commit/update), but it's really simple to\n                   use the GUI. Ant task are also available.\n                 </s>\n+            \t<s id=\"git\">Basic usage could be considered similar, but trying\n+\t\t\tto use Git like CVS would be counterproductive since many\n+\t\t\tcases of CVS usage is by design not possible in Git. The\n+\t\t\tnumber of command is large. ~140 but only ~20 commands\n+\t\t\tare typically used and less than ten will do for casual\n+\t\t\tusers.\n+                </s>\n            </compare>\n         </section>\n         <section id=\"networking\">\n@@ -1152,6 +1208,13 @@\n                 <s id=\"ls-sync\">\n                   Good. Use of HTTP to get through firwalls. \n                 </s>\n+            \t<s id=\"git\">\n+\t\t  Excellent. Normal usage is off-line, but networking is\n+\t\t  used for sharing changes Networking including ssh, \n+\t\t  a special git protocol http and mail can be used to share\n+\t\t  changes, both incoming and outgoing. Mail can be used\n+\t\t  via IMAP and mbox files.\n+                </s>\n             </compare>\n         </section>\n         <section id=\"portability\">\n@@ -1249,6 +1312,11 @@\n                   Excellent. Clients and servers work on any Java 1.5-compatible\n                   platform. (Windows, Linux and Mac OS X )\n                 </s>\n+            \t<s id=\"git\">\n+\t\t  Very good for POSIX compatible environments. A non-cygwin\n+\t\t  port for windows is underway. There are some graphical\n+\t\t  tools available for windows in cygwin.\n+                </s>\n             </compare>\n         </section>\n     </section>\n@@ -1323,6 +1391,7 @@\n                   Yes, without diff features but with a better awareness support.\n                   (allow to know at any time on each version each one is working on) \n                 </s>\n+                <s id=\"git\">Yes. gitweb</s>\n             </compare>\n         </section>\n         <section id=\"availability_of_guis\">\n@@ -1421,6 +1490,10 @@\n                   is automatically launched from the repository web page and \n                   another one which is an Eclipse plugin.\n                 </s>\n+                <s id=\"git\">\n+\t\t  A number of good GUI's are availble for basic usage, \n+\t\t  but typical usage is command based.\n+                </s>\n            </compare>\n         </section>\n     </section>\n@@ -1501,7 +1574,8 @@\n               additional licensing.\n             </s>\n             <s id=\"ls-sync\">QPL - The Qt Public License (OpenSource)</s>\n-        </compare>\n+            <s id=\"git\">GPL</s>\n+       </compare>\n     </section>\n </section>\n     </contents>\n\n\n-- robin\n"},{"id":"61355","messageId":"200711290326.13822.jnareb@gmail.com","threadId":"11052","inReplyTo":"200711282339.59938.jnareb@gmail.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-11-29T02:26:12Z","receivedAt":"2007-11-29T02:26:12Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Jakub Narebski wrote:\n\n> To do that, I need to fill in information about Git.  Most\n> of questions / items didn't give much problem, but there\n> are a few on which I would like your input.\n\nBy the way, below is patch with the information I have filled.\nCheck out the TO DO items.\n\ndiff --git a/src/comparison/scm-comparison.xml b/src/comparison/scm-comparison.xml\nindex b459747..6f84190 100644\n--- a/src/comparison/scm-comparison.xml\t\n+++ b/src/comparison/scm-comparison.xml\t\n@@ -38,6 +38,9 @@ TODO:\n             <impl id=\"darcs\">\n                 <name>Darcs</name>\n             </impl>\n+            <impl id=\"git\">\n+                <name>Git</name>\n+            </impl>\n             <impl id=\"mercurial\">\n                 <name>Mercurial</name>\n             </impl>\n@@ -106,6 +109,7 @@ TODO:\n                 <s id=\"svk\">Commits are atomic.</s>\n                 <s id=\"aegis\">Commits are atomic.</s>\n                 <s id=\"bitkeeper\">Yes (but need to verify)</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">Yes. Commits are atomic.</s>\n@@ -142,6 +146,11 @@ TODO:\n                 <s id=\"darcs\">Yes. Renames are supported.</s>\n                 <s id=\"bitkeeper\">Yes. Renames are supported.</s>\n                 <s id=\"aegis\">Yes. Renames are supported.</s>\n+                <s id=\"git\">\n+                    N/A. Git does not track renames, but detects renames\n+                    and copies.  You can follow history of file using\n+                    'git log --follow'.\n+                </s>\n                 <s id=\"mercurial\">Yes. Renames are supported.</s>\n                 <s id=\"monotone\">Yes. Renames are supported.</s>\n                 <s id=\"opencm\">Yes. Renames are supported</s>\n@@ -214,6 +223,11 @@ TODO:\n                     Yes. Copies are supported.\n                 </s>\n                 <s id=\"aegis\">No. Copies are not supported.</s>\n+                <s id=\"git\">\n+                    N/A. Git does not track copies, but detects renames\n+                    and copies.  You can follow history of file using\n+                    'git log -C --follow'.\n+                </s>\n                 <s id=\"mercurial\">Yes. Copies are supported</s>\n                 <s id=\"monotone\">Yes. Copies are supported</s>\n                 <s id=\"opencm\">No. Copies are not supported.</s>\n@@ -267,6 +281,7 @@ TODO:\n                 <s id=\"darcs\">Yes.</s>\n                 <s id=\"bitkeeper\">Yes.</s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -313,6 +328,7 @@ TODO:\n                 <s id=\"darcs\">Yes.</s>\n                 <s id=\"bitkeeper\">Yes.</s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -373,6 +389,10 @@ TODO:\n                 <s id=\"svk\">\n                     Same as subversion.\n                 </s>\n+                <s id=\"git\">\n+                    Partial (?). It is possible to lock down repository\n+                    (access to branches and tags) using hooks.\n+                </s>\n                 <s id=\"mercurial\">\n                     Yes. It is possible to lock down repositories,\n                     subdirectories, or files using hooks.\n@@ -455,6 +475,9 @@ TODO:\n                 <s id=\"darcs\">\n                     Yes. Changesets are supported.\n                 </s>\n+                <s id=\"git\">\n+                    Yes. Changesets are supported.\n+                </s>\n                 <s id=\"mercurial\">\n                     Yes. Changesets are supported.\n                 </s>\n@@ -509,6 +532,7 @@ TODO:\n                 <s id=\"arch\">Not in the command line client, but ViewARCH,\n                 a web-interface for Arch, has it.</s>\n                 <s id=\"darcs\">Yes. (darcs annotate)</s>\n+                <s id=\"git\">Yes. (git blame, git gui blame)</s>\n                 <s id=\"mercurial\">Yes. (hg annotate)</s>\n                 <s id=\"monotone\">Yes, as of version 0.19.</s>\n                 <s id=\"aegis\">Yes. aeannotate</s>\n@@ -570,6 +594,9 @@ TODO:\n                     whole.\n                 </s>\n                 <s id=\"aegis\">No. All changes are made repository-wide.</s>\n+                <s id=\"git\">\n+                    No. All changes are made repository-wide.\n+                    But you can use submodules / subrpoject support for that.</s>\n                 <s id=\"mercurial\">\n                     It is possible to commit changes only in a subset of the\n                     tree. There are plans for partial checkouts.\n@@ -636,6 +663,10 @@ TODO:\n                     Yes, using \"darcs whatsnew\".\n                 </s>\n                 <s id=\"aegis\">Yes. Using aediff</s>\n+                <s id=\"git\">\n+                    Yes. Using git diff.\n+                    Note that git uses staging area for commits (index).\n+                </s>\n                 <s id=\"mercurial\">Yes. Using hg diff.</s>\n                 <s id=\"monotone\">Yes. In a similar fashion to CVS.</s>\n                 <s id=\"opencm\">Yes. Using cm diff</s>\n@@ -681,6 +712,10 @@ TODO:\n                 <s id=\"darcs\">\n                     No.\n                 </s>\n+                <s id=\"git\">\n+                    No.  But you can tag (with description) given contents\n+                    of a file (blob).\n+                </s>\n                 <s id=\"mercurial\">\n                     No.\n                 </s>\n@@ -782,6 +817,15 @@ TODO:\n                     and the client contains a help tool that offers\n                     an integrated help system.\n                 </s>\n+                <s id=\"git\">\n+                    Medium. There's Git User's Manual, manpages, some\n+                    technical documentation and some howtos.  All\n+                    documentation is also available online in HTML format;\n+                    there is additional information (including beginnings\n+                    of FAQ) on git wiki.\n+                    Nevertheles one of complaints in surveys is insufficient\n+                    or fragmented documentation.\n+                </s>\n                 <s id=\"mercurial\">\n                     Very good. There's an overview and tutorial on the\n                     web site, and integrated help for every command.\n@@ -894,6 +938,14 @@ TODO:\n                     to install the subversion perl bindings and a few modules\n                     from CPAN.\n                 </s>\n+                <s id=\"git\">\n+                    TO DO. RPMs and deb packages for Linux. msysGit and\n+                    Cygwin for Win32 - Git requires POSIX shell, Perl,\n+                    and POSIX utilities for some commands (builtin).\n+                    Autoconf to generate Makefile configuration; ready\n+                    generic configuration for many OS. Compiling docs\n+                    requires asciidoc and xmlto toolchain, but prebuild.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent.  Binary packages are available for all\n                     popular platforms.  Building from source requires\n@@ -1006,6 +1058,13 @@ TODO:\n                     but since the model is different most commands are\n                     unique.\n                 </s>\n+                <s id=\"git\">\n+                    TO DO.\n+                    Tries to follow CVS conventions, but deviates where there\n+                    is a different design.\n+                    Large command set divided into plumbing (low lewel, to be\n+                    used in scripts) and porcelain (high level).\n+                </s>\n                 <s id=\"mercurial\">\n                     Tries to follow CVS conventions, but deviates where there\n                     is a different design.\n@@ -1106,6 +1165,10 @@ TODO:\n                     There exists some HTTP-functionality, but it is quite\n                     limited.\n                 </s>\n+                <s id=\"git\">\n+                    Good.  Uses HTTPS (with WebDAV) or ssh for push,\n+                    HTTP, FTP, ssh or custom protocol for fetch.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent.  Uses HTTP or ssh.  Remote access also\n                     works safely without locks over read-only network\n@@ -1203,6 +1266,10 @@ TODO:\n                     Very good. Supports many UNIXes, Mac OS X, and Windows,\n                     and is written in a portable language.\n                 </s>\n+                <s id=\"git\">TO DO.\n+                    Good.  Portable across all POSIX systems.\n+                    There exists Win32 binary using MinGW.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent. Runs on all platforms supported by\n                     Python.  Repositories are portable across CPU\n@@ -1300,6 +1367,9 @@ TODO:\n                     is included in the distribution.\n                 </s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">\n+                    Yes.  The web interface is a bundled component.\n+                    Other web interfaces: cgit, wit, git-php</s>\n                 <s id=\"mercurial\">Yes.  The web interface is a bundled component.</s>\n                 <s id=\"monotone\">No.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -1373,6 +1443,11 @@ TODO:\n                 <s id=\"aegis\">\n                     There is tkaegis.\n                 </s>\n+                <s id=\"git\">RO DO\n+                    Bundled history viewer gitk and commit tool git-gui,\n+                    both use Tcl/Tk.  There is also qgit (Qt) and Giggle\n+                    (GTK+).\n+                </s>\n                 <s id=\"mercurial\">\n                     History viewing available with hgit extension;\n                     check-in extension (hgct) makes committing easier.\n@@ -1453,6 +1528,7 @@ TODO:\n                 GNU GPL (open-source)\n             </s>\n             <s id=\"svk\">Perl License. (open source)</s>\n+            <s id=\"git\">GNU GPL (open source)</s>\n             <s id=\"mercurial\">GNU GPL (open source)</s>\n             <s id=\"monotone\">GNU GPL (open source)</s>\n             <s id=\"opencm\">\n\n\n-- \nJakub Narebski\nPoland\n"},{"id":"61371","messageId":"20071129071705.GB24070@efreet.light.src","threadId":"11052","inReplyTo":"200711290248.23239.robin.rosenberg.lists@dewire.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Jan Hudec","fromEmail":"bulb@ucw.cz","sentAt":"2007-11-29T07:17:05Z","receivedAt":"2007-11-29T07:17:05Z","isPatch":false,"sender":{"key":"bulb@ucw.cz","avatar":null},"body":"On Thu, Nov 29, 2007 at 02:48:22 +0100, Robin Rosenberg wrote:\n> I did start doing this so here's my version (pre-msysgit). Please try to bring up the defintion\n> of \"atomic\" again with the author. I did complain a little but nothing happened. The issue is\n> that Clearcase is listed as having \"atomic\" commits which is not true for any usable definition\n> of atomic in SCM context. With the definition in use there I think CVS should be considered\n> having atomic commits too, at least I've never seen a half-committed file there.\n\nActually, I did. Or rather, I did see a commit, that didn't make it to the\nserver, but the client thought it did!\n\nMaybe instead of asking the author to change the definition of atomic, ask\nhim to add an item for whole-tree commits. That more precisely describes what\nis the point.\n\n-- \n\t\t\t\t\t\t Jan 'Bulb' Hudec <bulb@ucw.cz>\n"},{"id":"61421","messageId":"20071129200710.GA3314@steel.home","threadId":"11052","inReplyTo":"200711290326.13822.jnareb@gmail.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2007-11-29T20:07:10Z","receivedAt":"2007-11-29T20:07:10Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Jakub Narebski, Thu, Nov 29, 2007 03:26:12 +0100:\n> +                <s id=\"git\">\n> +                    Medium. There's Git User's Manual, manpages, some\n> +                    technical documentation and some howtos.  All\n> +                    documentation is also available online in HTML format;\n> +                    there is additional information (including beginnings\n> +                    of FAQ) on git wiki.\n> +                    Nevertheles one of complaints in surveys is insufficient\n\n\"Nevertheless\" (two \"s\").\n\nBTW, I wouldn't call the level of documentation \"Medium\" when compared\nto any commercial SCM. How can they earn more than \"a little\", when\ncompared to any opensource program?\n\n> @@ -894,6 +938,14 @@ TODO:\n>                      to install the subversion perl bindings and a few modules\n>                      from CPAN.\n>                  </s>\n> +                <s id=\"git\">\n> +                    TO DO. RPMs and deb packages for Linux. msysGit and\n> +                    Cygwin for Win32 - Git requires POSIX shell, Perl,\n> +                    and POSIX utilities for some commands (builtin).\n\nI read this as: \"Git requires all these programs for builtin\ncommands\". Which is a bit confusing. Just drop \"(builtin)\"?\n\n> +                    Autoconf to generate Makefile configuration; ready\n> +                    generic configuration for many OS. Compiling docs\n> +                    requires asciidoc and xmlto toolchain, but prebuild.\n\n\"prebuilt\" (with \"t\"). Maybe remove \", but prebuilt\" completely?\n\n> @@ -1106,6 +1165,10 @@ TODO:\n>                      There exists some HTTP-functionality, but it is quite\n>                      limited.\n>                  </s>\n> +                <s id=\"git\">\n> +                    Good.  Uses HTTPS (with WebDAV) or ssh for push,\n> +                    HTTP, FTP, ssh or custom protocol for fetch.\n> +                </s>\n\nYou forgot bundles (aka SneakerNet).\nAgain, compared to everyone else it is \"vastly superior\" :)\n\n>                  <s id=\"mercurial\">\n>                      Excellent.  Uses HTTP or ssh.  Remote access also\n>                      works safely without locks over read-only network\n> @@ -1203,6 +1266,10 @@ TODO:\n>                      Very good. Supports many UNIXes, Mac OS X, and Windows,\n>                      and is written in a portable language.\n>                  </s>\n> +                <s id=\"git\">TO DO.\n> +                    Good.  Portable across all POSIX systems.\n> +                    There exists Win32 binary using MinGW.\n> +                </s>\n\n\"binaries\": MinGW and Cygwin. And it is definitely \"excellent\" by the\nstandards of the site.\n"},{"id":"61436","messageId":"200711300118.28145.jnareb@gmail.com","threadId":"11052","inReplyTo":"20071129200710.GA3314@steel.home","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-11-30T00:18:27Z","receivedAt":"2007-11-30T00:18:27Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Thu, 29 Nov 2007, Alex Riesen wrote:\n> Jakub Narebski, Thu, Nov 29, 2007 03:26:12 +0100:\n\n>> +                <s id=\"git\">\n>> +                    Medium. There's Git User's Manual, manpages, some\n>> +                    technical documentation and some howtos.  All\n>> +                    documentation is also available online in HTML format;\n>> +                    there is additional information (including beginnings\n>> +                    of FAQ) on git wiki.\n>> +                    Nevertheles one of complaints in surveys is insufficient\n> \n> \"Nevertheless\" (two \"s\").\n> \n> BTW, I wouldn't call the level of documentation \"Medium\" when compared\n> to any commercial SCM. How can they earn more than \"a little\", when\n> compared to any opensource program?\n\nSource code is not [user level] documentation.\n\nBut perhaps it should be \"Good\" instead of \"Medium\", although I think\nnot \"Excellent\".\n \n>> @@ -894,6 +938,14 @@ TODO:\n>>                      to install the subversion perl bindings and a few modules\n>>                      from CPAN.\n>>                  </s>\n>> +                <s id=\"git\">\n>> +                    TO DO. RPMs and deb packages for Linux. msysGit and\n>> +                    Cygwin for Win32 - Git requires POSIX shell, Perl,\n>> +                    and POSIX utilities for some commands (builtin).\n> \n> I read this as: \"Git requires all these programs for builtin\n> commands\". Which is a bit confusing. Just drop \"(builtin)\"?\n\nWhat I meant to say that some Git commands are scripts in Perl or POSIX\nshell, and that those Git commands requires POSIX utilities (which of\nthose utilities are needed is unfortunately not mentioned explicitely\nin the INSTALL file); _but_ that there is ongoing effort to rewrite\nmatured commands in C (as built-ins).\n\nBut this is perhaps too long explanation to put it in this comparison\ntable.\n\n>> +                    Autoconf to generate Makefile configuration; ready\n>> +                    generic configuration for many OS. Compiling docs\n>> +                    requires asciidoc and xmlto toolchain, but prebuild.\n> \n> \"prebuilt\" (with \"t\"). Maybe remove \", but prebuilt\" completely?\n\nGaaah, it should be \"but you can get prebuilt docs\".\n \n>> @@ -1106,6 +1165,10 @@ TODO:\n>>                      There exists some HTTP-functionality, but it is quite\n>>                      limited.\n>>                  </s>\n>> +                <s id=\"git\">\n>> +                    Good.  Uses HTTPS (with WebDAV) or ssh for push,\n>> +                    HTTP, FTP, ssh or custom protocol for fetch.\n>> +                </s>\n> \n> You forgot bundles (aka SneakerNet).\n> Again, compared to everyone else it is \"vastly superior\" :)\n\nBundles and patches (peer review!) I think truly move it from \"Good\"\nto \"Excellent\".\n\n>>                  <s id=\"mercurial\">\n>>                      Excellent.  Uses HTTP or ssh.  Remote access also\n>>                      works safely without locks over read-only network\n\nBy the way, can Git be used with repository on lockless network\nfilesystem? (Although with distributed SCM it perhaps be better\nto just use many distributed repositories...). How does it work\nwith repository available via SMBFS / CIFS or NFS?\n\n>> @@ -1203,6 +1266,10 @@ TODO:\n>>                      Very good. Supports many UNIXes, Mac OS X, and Windows,\n>>                      and is written in a portable language.\n>>                  </s>\n>> +                <s id=\"git\">TO DO.\n>> +                    Good.  Portable across all POSIX systems.\n>> +                    There exists Win32 binary using MinGW.\n>> +                </s>\n> \n> \"binaries\": MinGW and Cygwin. And it is definitely \"excellent\" by the\n> standards of the site.\n\nI'd say excellent on POSIX systems, good on Win32 (there are still\nas far as I remember some troubles). I hope that gitbox project would\nsucceed, and one would need only single binary (plus perhaps wish for\nGUI, and DLLs) to use git on MS Windows.\n\n-- \nJakub Narebski\nPoland\n"},{"id":"61459","messageId":"200711300226.54338.johan@herland.net","threadId":"11052","inReplyTo":"200711300118.28145.jnareb@gmail.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Johan Herland","fromEmail":"johan@herland.net","sentAt":"2007-11-30T01:26:54Z","receivedAt":"2007-11-30T01:26:54Z","isPatch":false,"sender":{"key":"johan@herland.net","avatar":"https://avatars.githubusercontent.com/u/547031?v=4"},"body":"On Friday 30 November 2007, Jakub Narebski wrote:\n> On Thu, 29 Nov 2007, Alex Riesen wrote:\n> > Jakub Narebski, Thu, Nov 29, 2007 03:26:12 +0100:\n> \n> >> +                <s id=\"git\">\n> >> +                    Medium. There's Git User's Manual, manpages, some\n> >> +                    technical documentation and some howtos.  All\n> >> +                    documentation is also available online in HTML format;\n> >> +                    there is additional information (including beginnings\n> >> +                    of FAQ) on git wiki.\n> >> +                    Nevertheles one of complaints in surveys is insufficient\n> > \n> > \"Nevertheless\" (two \"s\").\n> > \n> > BTW, I wouldn't call the level of documentation \"Medium\" when compared\n> > to any commercial SCM. How can they earn more than \"a little\", when\n> > compared to any opensource program?\n> \n> Source code is not [user level] documentation.\n> \n> But perhaps it should be \"Good\" instead of \"Medium\", although I think\n> not \"Excellent\".\n\nIf we try to compare ourselves to what's closest, i.e. Mercurial, I would\nsay that Git's documentation is probably on par with what Mercurial has to\noffer. Their \"Documentation\" entry in the comparison is as follows:\n\n\"Very good. There's an overview and tutorial on the web site, and integrated\nhelp for every command.\"\n\nI say we go for something similar.\n\n\nHave fun!\n\n...Johan\n\n-- \nJohan Herland, <johan@herland.net>\nwww.herland.net\n"},{"id":"61462","messageId":"200711300253.55759.jnareb@gmail.com","threadId":"11052","inReplyTo":"200711300226.54338.johan@herland.net","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-11-30T01:53:54Z","receivedAt":"2007-11-30T01:53:54Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"On Fri, 30 Nov 2007, Johan Herland wrote:\n> On Friday 30 November 2007, Jakub Narebski wrote:\n>> On Thu, 29 Nov 2007, Alex Riesen wrote:\n>>> Jakub Narebski, Thu, Nov 29, 2007 03:26:12 +0100:\n>> \n>>>> +             <s id=\"git\">\n>>>> +                 Medium. There's Git User's Manual, manpages, some\n>>>> +                 technical documentation and some howtos.  All\n>>>> +                 documentation is also available online in HTML format;\n>>>> +                 there is additional information (including beginnings\n>>>> +                 of FAQ) on git wiki.\n>>>> +                 Nevertheles one of complaints in surveys is insufficient\n>>> \n>>> \"Nevertheless\" (two \"s\").\n>>> \n>>> BTW, I wouldn't call the level of documentation \"Medium\" when compared\n>>> to any commercial SCM. How can they earn more than \"a little\", when\n>>> compared to any opensource program?\n>> \n>> Source code is not [user level] documentation.\n>> \n>> But perhaps it should be \"Good\" instead of \"Medium\", although I think\n>> not \"Excellent\".\n> \n> If we try to compare ourselves to what's closest, i.e. Mercurial, I would\n> say that Git's documentation is probably on par with what Mercurial has to\n> offer. Their \"Documentation\" entry in the comparison is as follows:\n> \n> \"Very good. There's an overview and tutorial on the web site, and integrated\n> help for every command.\"\n> \n> I say we go for something similar.\n\nWell, at least according to surveys results people perceive\n\"The Mercurial Book\" (hgbook) as better documentation than\n\"Git User's Manual\" + tutorials. See for example frequent requests\nfor \"The Git Book\" patterned after hgbook and/or svnbook.\n\nBTW. the list was meant to be updated by contributors who added\nSCMs, but it doesn't liik lik it is...\n\n-- \nJakub Narebski\nPoland\n"},{"id":"61482","messageId":"20071130071634.GA2975@steel.home","threadId":"11052","inReplyTo":"200711300118.28145.jnareb@gmail.com","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2007-11-30T07:16:34Z","receivedAt":"2007-11-30T07:16:34Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Jakub Narebski, Fri, Nov 30, 2007 01:18:27 +0100:\n> >>                  <s id=\"mercurial\">\n> >>                      Excellent.  Uses HTTP or ssh.  Remote access also\n> >>                      works safely without locks over read-only network\n> \n> By the way, can Git be used with repository on lockless network\n> filesystem? (Although with distributed SCM it perhaps be better\n> to just use many distributed repositories...). How does it work\n> with repository available via SMBFS / CIFS or NFS?\n\nWorks fine. CIFS/SMBFS is slow as hell when hosted on windows, but I\nfigure it is not problem of Git.\n"},{"id":"61517","messageId":"20071130183414.GD30048@efreet.light.src","threadId":"11052","inReplyTo":"20071129200710.GA3314@steel.home","subject":"Re: Adding Git to Better SCM Initiative : Comparison","fromName":"Jan Hudec","fromEmail":"bulb@ucw.cz","sentAt":"2007-11-30T18:34:14Z","receivedAt":"2007-11-30T18:34:14Z","isPatch":false,"sender":{"key":"bulb@ucw.cz","avatar":null},"body":"On Thu, Nov 29, 2007 at 21:07:10 +0100, Alex Riesen wrote:\n> Jakub Narebski, Thu, Nov 29, 2007 03:26:12 +0100:\n> > +                <s id=\"git\">\n> > +                    Medium. There's Git User's Manual, manpages, some\n> > +                    technical documentation and some howtos.  All\n> > +                    documentation is also available online in HTML format;\n> > +                    there is additional information (including beginnings\n> > +                    of FAQ) on git wiki.\n> > +                    Nevertheles one of complaints in surveys is insufficient\n> \n> \"Nevertheless\" (two \"s\").\n\nI think it's not amount of documentation that's insufficient, but rather the\norganization. The problem is not that the information is not there, but that\nit's sometimes not easy to find.\n\n> BTW, I wouldn't call the level of documentation \"Medium\" when compared\n> to any commercial SCM. How can they earn more than \"a little\", when\n> compared to any opensource program?\n\nI don't know that many commercial SCM, but clearcase does have more than \"a\nlittle\" documentation.\n\n> [...]\n>\n> > @@ -1106,6 +1165,10 @@ TODO:\n> >                      There exists some HTTP-functionality, but it is quite\n> >                      limited.\n> >                  </s>\n> > +                <s id=\"git\">\n> > +                    Good.  Uses HTTPS (with WebDAV) or ssh for push,\n> > +                    HTTP, FTP, ssh or custom protocol for fetch.\n> > +                </s>\n> \n> You forgot bundles (aka SneakerNet).\n> Again, compared to everyone else it is \"vastly superior\" :)\n\nIn fact at least darcs and bzr can also do SneakerNet.\n\n-- \n\t\t\t\t\t\t Jan 'Bulb' Hudec <bulb@ucw.cz>\n"},{"id":"61812","messageId":"200712032057.15296.jnareb@gmail.com","threadId":"11052","inReplyTo":"200711282339.59938.jnareb@gmail.com","subject":"Adding Git to Better SCM Initiative : Comparison","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2007-12-03T19:57:14Z","receivedAt":"2007-12-03T19:57:14Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Below there is email I want to send to Shlomi Fish to have him include\nGIT in \"Better SCM Initiative : Comparison page\".\n\nPlease check it and send comments and corrections. TIA.\n\n-- >8 --\nI have noticed that your SCM comparison at \"Better SCM Initiative\" website\n  http://better-scm.berlios.de/comparison/comparison.html\nmisses GIT, version control system which is used to manage Linux kernel.\n\nGIT was created by Linus Torvalds in response to the change of BitKeeper \nlicensing, as a tool to manage Linux kernel sources.  It is based on \nthree years of Linus experience with BitKeeper, and inspired by \nMonotone architecture.  It was designed for Linux kernel, and is used\nby various projects, including X.Org, various Freedesktop projects, WINE,\nOLPC (One Laptop Per Child), Samba.\n\n<blurb src=\"http://git-scm.org\">\nGit  is  a  popular  version control system designed to handle very large projects\nwith  speed  and  efficiency;  it is used mainly for various open source projects,\nmost notably the Linux kernel.\n\nGit  falls in the category of distributed source code management tools, similar to\ne.g.  GNU  Arch  or  Monotone  (or  BitKeeper in the proprietary world). Every Git\nworking  directory  is  a  full-fledged  repository  with  full  revision tracking\ncapabilities, not dependent on network access or a central server.\n\nGit is an Open Source project covered by the GNU General Public License v2. It was\noriginally  written  by  Linus  Torvalds  and  is  currently maintained by Junio C\nHamano.\n</blurb>\n\nBelow there is patch to the sources for the site.\n\nBTW. when asking about updating GIT info for comparison, please CC\ngit mailing list, git@vger.kernel.org\n\nIndex: src/comparison/scm-comparison.xml\n===================================================================\n--- src/comparison/scm-comparison.xml\t(revision 290)\n+++ src/comparison/scm-comparison.xml\t(working copy)\n@@ -38,6 +38,9 @@ <implementations>\n             <impl id=\"darcs\">\n                 <name>Darcs</name>\n             </impl>\n+            <impl id=\"git\">\n+                <name>Git</name>\n+            </impl>\n             <impl id=\"mercurial\">\n                 <name>Mercurial</name>\n             </impl>\n@@ -106,6 +109,7 @@ <title>Atomic Commits</title>\n                 <s id=\"svk\">Commits are atomic.</s>\n                 <s id=\"aegis\">Commits are atomic.</s>\n                 <s id=\"bitkeeper\">Yes (but need to verify)</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">Yes. Commits are atomic.</s>\n@@ -142,6 +146,13 @@ <title>Files and Directories Moves or Renames</title>\n                 <s id=\"darcs\">Yes. Renames are supported.</s>\n                 <s id=\"bitkeeper\">Yes. Renames are supported.</s>\n                 <s id=\"aegis\">Yes. Renames are supported.</s>\n+                <s id=\"git\">\n+                    Yes (or no depending on interpretation). Git detects\n+                    renames based on content regardless of whether the\n+                    committer indicated the fact.\n+                    You can follow history of file across renames using\n+                    'git log -M --follow'.\n+                </s>\n                 <s id=\"mercurial\">Yes. Renames are supported.</s>\n                 <s id=\"monotone\">Yes. Renames are supported.</s>\n                 <s id=\"opencm\">Yes. Renames are supported</s>\n@@ -214,6 +225,13 @@ <title>File and Directories Copies</title>\n                     Yes. Copies are supported.\n                 </s>\n                 <s id=\"aegis\">No. Copies are not supported.</s>\n+                <s id=\"git\">\n+                    Yes (or no depending on interpretation). Git detects\n+                    copies (when requested) based on content regardless\n+                    of whether the committer indicated the fact.\n+                    You can follow history of file across copies using\n+                    'git log -C -C --follow'.\n+                </s>\n                 <s id=\"mercurial\">Yes. Copies are supported</s>\n                 <s id=\"monotone\">Yes. Copies are supported</s>\n                 <s id=\"opencm\">No. Copies are not supported.</s>\n@@ -267,6 +285,7 @@ <title>Remote Repository Replication</title>\n                 <s id=\"darcs\">Yes.</s>\n                 <s id=\"bitkeeper\">Yes.</s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -313,6 +332,7 @@ <title>Propagating Changes to Parent Repositories</title>\n                 <s id=\"darcs\">Yes.</s>\n                 <s id=\"bitkeeper\">Yes.</s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">Yes.</s>\n                 <s id=\"mercurial\">Yes.</s>\n                 <s id=\"monotone\">Yes.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -373,6 +393,10 @@ <title>Repository Permissions</title>\n                 <s id=\"svk\">\n                     Same as subversion.\n                 </s>\n+                <s id=\"git\">\n+                    Partial (?). It is possible to lock down repository\n+                    (access to branches and tags) using hooks.\n+                </s>\n                 <s id=\"mercurial\">\n                     Yes. It is possible to lock down repositories,\n                     subdirectories, or files using hooks.\n@@ -455,6 +479,13 @@ <title>Changesets' Support</title>\n                 <s id=\"darcs\">\n                     Yes. Changesets are supported.\n                 </s>\n+                <s id=\"git\">\n+                    Yes. Changesets are supported.<br />\n+                    Actually Git is snapshot based which means Git records\n+                    the full state in every commit.  This means that any two\n+                    commits can be compared directly very quickly, although the\n+                    repository is typically browsed as a series of changesets.\n+                </s>\n                 <s id=\"mercurial\">\n                     Yes. Changesets are supported.\n                 </s>\n@@ -509,6 +540,11 @@ <title>Tracking Line-wise File History</title>\n                 <s id=\"arch\">Not in the command line client, but ViewARCH,\n                 a web-interface for Arch, has it.</s>\n                 <s id=\"darcs\">Yes. (darcs annotate)</s>\n+                <s id=\"git\">\n+                    Yes. (git blame, git gui blame).\n+                    It can also detect the origin of copied and moved source\n+                    lines, and can ignore whitespace changes.\n+                </s>\n                 <s id=\"mercurial\">Yes. (hg annotate)</s>\n                 <s id=\"monotone\">Yes, as of version 0.19.</s>\n                 <s id=\"aegis\">Yes. aeannotate</s>\n@@ -570,6 +606,11 @@ <title>Ability to Work only on One Directory...</title>\n                     whole.\n                 </s>\n                 <s id=\"aegis\">No. All changes are made repository-wide.</s>\n+                <s id=\"git\">\n+                    No. All changes are made repository-wide.  However\n+                    it is possible to commit only selected changes in the\n+                    working tree rather than everything.  You can also\n+                    use submodules (subproject) support.</s>\n                 <s id=\"mercurial\">\n                     It is possible to commit changes only in a subset of the\n                     tree. There are plans for partial checkouts.\n@@ -636,6 +677,10 @@ <title>Tracking Uncommited Changes</title>\n                     Yes, using \"darcs whatsnew\".\n                 </s>\n                 <s id=\"aegis\">Yes. Using aediff</s>\n+                <s id=\"git\">\n+                    Yes, of course. Using git diff.\n+                    Note that git uses staging area for commits (index).\n+                </s>\n                 <s id=\"mercurial\">Yes. Using hg diff.</s>\n                 <s id=\"monotone\">Yes. In a similar fashion to CVS.</s>\n                 <s id=\"opencm\">Yes. Using cm diff</s>\n@@ -681,6 +726,11 @@ <title>Per-File Commit Messages</title>\n                 <s id=\"darcs\">\n                     No.\n                 </s>\n+                <s id=\"git\">\n+                    No.  The message applies to the commit as a whole.\n+                    But you can tag (with description) given contents\n+                    of a file (blob).\n+                </s>\n                 <s id=\"mercurial\">\n                     No.\n                 </s>\n@@ -782,6 +832,15 @@ <title>Documentation</title>\n                     and the client contains a help tool that offers\n                     an integrated help system.\n                 </s>\n+                <s id=\"git\">\n+                    Good. There's Git User's Manual, manpages, some\n+                    technical documentation and some howtos.  All\n+                    documentation is also available\n+                    <a href=\"http://www.kernel.org/pub/software/scm/git/docs\">online</a>\n+                    in HTML format; there is additional information (including\n+                    beginnings of FAQ) on a\n+                    <a href=\"http://git-scm.org/gitwiki\">git wiki</a>.\n+                </s>\n                 <s id=\"mercurial\">\n                     Very good. There's an overview and tutorial on the\n                     web site, and integrated help for every command.\n@@ -894,6 +953,16 @@ <title>Ease of Deployment</title>\n                     to install the subversion perl bindings and a few modules\n                     from CPAN.\n                 </s>\n+                <s id=\"git\">\n+                    Very good.  Install from RPM or deb on Linux; use\n+                    msysGit or Cygwin install on Windows.  Git requires\n+                    zlib; also POSIX shell and utilities and Perl for some\n+                    commands.\n+                    Installing from sources is easy: Makefile has ready\n+                    configuration for many OS, you can also use autoconf\n+                    to generate Makefile configuration.  Compiling docs\n+                    requires asciidoc toolchain, but you can use prebuild.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent.  Binary packages are available for all\n                     popular platforms.  Building from source requires\n@@ -1006,6 +1075,13 @@ <title>Command Set</title>\n                     but since the model is different most commands are\n                     unique.\n                 </s>\n+                <s id=\"git\">\n+                    Tries to follow CVS conventions, but deviates where there\n+                    is a different design (following BitKeeper for DVCS).\n+                    Large command set (~140) is divided into plumbing commands\n+                    (low lewel, to be used in scripts) and porcelain (high level).\n+                    It is easy to add new commands as scripts, or as git aliases.\n+                </s>\n                 <s id=\"mercurial\">\n                     Tries to follow CVS conventions, but deviates where there\n                     is a different design.\n@@ -1106,6 +1182,13 @@ <title>Networking Support</title>\n                     There exists some HTTP-functionality, but it is quite\n                     limited.\n                 </s>\n+                <s id=\"git\">\n+                    Excellent.  Uses HTTPS (with WebDAV) or ssh for push\n+                    (to publish changes to server) and HTTP, FTP, ssh or custom\n+                    \"git\" protocol for fetch (read from server).  There is also\n+                    git-bundle for offline transport, and tools to exchange\n+                    (create and apply) patches via email.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent.  Uses HTTP or ssh.  Remote access also\n                     works safely without locks over read-only network\n@@ -1203,6 +1286,11 @@ <title>Portability</title>\n                     Very good. Supports many UNIXes, Mac OS X, and Windows,\n                     and is written in a portable language.\n                 </s>\n+                <s id=\"git\">\n+                    Good to very good.  Portable across all POSIX systems.\n+                    There exists Win32 binary using MinGW (msysGit),\n+                    or you can use binary provided by Cygwin.\n+                </s>\n                 <s id=\"mercurial\">\n                     Excellent. Runs on all platforms supported by\n                     Python.  Repositories are portable across CPU\n@@ -1300,6 +1388,10 @@ <title>Web Interface</title>\n                     is included in the distribution.\n                 </s>\n                 <s id=\"aegis\">Yes.</s>\n+                <s id=\"git\">\n+                    Yes, gitweb is included in git since version 1.4.0.\n+                    Other web interfaces exists: cgit, wit, git-php\n+                </s>\n                 <s id=\"mercurial\">Yes.  The web interface is a bundled component.</s>\n                 <s id=\"monotone\">No.</s>\n                 <s id=\"opencm\">No.</s>\n@@ -1373,6 +1464,12 @@ <title>Availability of Graphical User-Interfaces.</title>\n                 <s id=\"aegis\">\n                     There is tkaegis.\n                 </s>\n+                <s id=\"git\">\n+                    There is history viewer 'gitk' and commit tool 'git-gui';\n+                    both in Tcl/Tk.  There also exists a number of third-party\n+                    GUIs, including: qgit (Qt), GitView (GTK+), Giggle (GTK+),\n+                    tig (ncurses).\n+                </s>\n                 <s id=\"mercurial\">\n                     History viewing available with hgit extension;\n                     check-in extension (hgct) makes committing easier.\n@@ -1453,6 +1550,7 @@ <title>License</title>\n                 GNU GPL (open-source)\n             </s>\n             <s id=\"svk\">Perl License. (open source)</s>\n+            <s id=\"git\">GNU GPL v2 (open source)</s>\n             <s id=\"mercurial\">GNU GPL (open source)</s>\n             <s id=\"monotone\">GNU GPL (open source)</s>\n             <s id=\"opencm\">\n"}]}