Subject: Adding Git to Better SCM Initiative : Comparison

From: Jakub Narebski <[email-masked]>
Date: Wed, 28 Nov 2007 23:39:59 +0100

I'd like to add Git to comparison table of SCMs at Better SCM
Initiative site:
  http://better-scm.berlios.de

To do that, I need to fill in infomration about Git.  Most
of questions / items didn't give much problem, but there
are a few on which I would like your input.

(Yes, I know that such SCM comparisons are usually biased towards the
idea of what are most important features of a version control system.
Nevertheless...)

1. Ease of Deployment

   How easy it is to deploy the software? What are
   the depenedencies and how can they be satisfied?

There are binary packages for Linux (RPM, deb) and for MS Windows
(msysGit).  Git requires POSIX shell, Perl, and POSIX utilities
(BTW. INSTALL file lacks full specification of dependences); although
there is ongoing effort towards making all commands builtin, in C.
Makefile contains ready configuration for many OS, and there is
autoconf script to generate Makefile configuration.

I'm not sure if the problems with compiling documentation to HTML and
manpage forms, which require AsciiDoc and xmlto toolchains should be
also mentioned here.  Well, that and the fact that there exist
pre-build documentation in html and man forms.

2. Command Set

   What is the command set? How compatible it is with
   the commands of CVS (the current open-source defacto
   standard)?

Should it be: "Tries to follow CVS conventions, but deviates where
there is a different design.", as for Mercurial and Monotone?
If I remember correctly command set is patterned somewhat after
BitKeeper.

"Large command set divided into plumbing (low lewel, to be used in
 scripts) and porcelain (high level commands)."

3. Portability

   How portable is the version-control system to various 
   operating systems, computer architectures, and other
   types of systems?

"Good.  Portable across all POSIX systems.
 There exists Win32 binary using MinGW."

>>From the results of Git User's Surveys there are many OS on which Git
is used; but it doesn't tell us how hard was to deply Git on those
exotic operatings systems.

4. Repository Permissions

   Is it possible to define permissions on access to different
   parts of a remote repository? Or is access open for all?

"Partial (?). It is possible to lock down repository
 (access to branches and tags) using hooks."

I don't know if it is possible to do finer level ACLs, i.e. if it
is possible to lock subdirectories or files in Git.  Although for
distributed SCMs ACL doesn't matter much: check diffstat and merge or
not from trusted people.  We have "network of trust" (BTW. Karl Fogel
in OSSBook recommends 'soft' control of access control to repository,
on social rather than on technical level).

P.S. How do "svn diff" looks like?
-- 
Jakub Narebski
Poland