Subject: Re: Adding Git to Better SCM Initiative : Comparison

From: Florian Weimer <[email-masked]>
Date: Mon, 10 Dec 2007 15:49:39 +0100

* Jakub Narebski:

> +                <s id="git">
> +                    Yes (or no depending on interpretation). Git

This should be "No." (same for copies below).

> +                <s id="git">
> +                    Partial (?). It is possible to lock down repository
> +                    (access to branches and tags) using hooks.
> +                </s>

I doubt this works reliably.  You still can access data once you've got
its SHA1 hash, for instance.

> +                <s id="git">
> +                    Yes. Changesets are supported.<br />
> +                    Actually Git is snapshot based which means Git records
> +                    the full state in every commit.  This means that any two
> +                    commits can be compared directly very quickly, although the
> +                    repository is typically browsed as a series of changesets.
> +                </s>

I don't think this explanation is necessary.  What does Subversion say?

> +                <s id="git">
> +                    Yes. (git blame, git gui blame).
> +                    It can also detect the origin of copied and moved source
> +                    lines, and can ignore whitespace changes.
> +                </s>

A simple "Yes." should suffice.

> @@ -636,6 +677,10 @@ <title>Tracking Uncommited Changes</title>
>                      Yes, using "darcs whatsnew".
>                  </s>
>                  <s id="aegis">Yes. Using aediff</s>
> +                <s id="git">
> +                    Yes, of course. Using git diff.
> +                    Note that git uses staging area for commits (index).
> +                </s>

Simply "Yes.".  "git diff" is wrong, it's actually "git diff HEAD".

> @@ -681,6 +726,11 @@ <title>Per-File Commit Messages</title>
>                  <s id="darcs">
>                      No.
>                  </s>
> +                <s id="git">
> +                    No.  The message applies to the commit as a whole.
> +                    But you can tag (with description) given contents
> +                    of a file (blob).
> +                </s>

Have we got any real tool support for this?  This should be "No.".

> @@ -1006,6 +1075,13 @@ <title>Command Set</title>
>                      but since the model is different most commands are
>                      unique.
>                  </s>
> +                <s id="git">
> +                    Tries to follow CVS conventions, but deviates where there
> +                    is a different design (following BitKeeper for DVCS).

I don't think this is true.  Is there any command that closely matches
what CVS does?

> @@ -1203,6 +1286,11 @@ <title>Portability</title>
>                      Very good. Supports many UNIXes, Mac OS X, and Windows,
>                      and is written in a portable language.
>                  </s>
> +                <s id="git">
> +                    Good to very good.  Portable across all POSIX systems.
> +                    There exists Win32 binary using MinGW (msysGit),
> +                    or you can use binary provided by Cygwin.
> +                </s>

Isn't Windows support still a bit lacking in terms of performance?