dist-hg proof-of-concept ready for use

Carl Worth cworth at redhat.com
Thu Nov 9 01:21:40 UTC 2006


On Wed, 08 Nov 2006 18:57:49 -0500, Havoc Pennington wrote:
> > On Wed, 08 Nov 2006 14:22:01 -0500, Havoc Pennington wrote:
> >
> > Havoc, I don't follow your argument at all. If Eclipse is the
> > important UI, then how could the git command-line be relevant at all?
>
> I'm just talking about my personal preference.
>
> I use both command line and Eclipse pretty often.

OK. So an eclipse plugin for git is missing, but you do also care
about the command-line interface.

> Let's put it this way: honestly I don't care how cool the git
> implementation is, if I have to _know_ what the implementation is. If I
> wanted to know, I would write my own version control system like
> everyone else ;-)

I can appreciate you not being interested in learning the details of
the implementation. But for making a decision, _somebody_ should have
an informed opinion based on the details. Because they really do
matter for all the reasons Keith explained in his blog entry. If I
were asked for my opinion, I would say "I've studied the details of
the svn, git, bzr, and hg implementations and git wins hands
down". And you should just accept that as truth, because otherwise
I'll have to start telling you _why_ which will involve details you
don't want to hear.

> [1] I'm not going to be productive and try to design something
> better/ideal, since it would take weeks, but if you "man git" there's a
> "Plumbing" section and a "Porcelain" section. As a start, I'd like to
> live in a world where "Plumbing" was somewhere I never saw it.

Sure. And that's a worthwhile part of the metaphor that still needs to
sink in with git in a few places.

> Right now the terminology and goo from that layer leaks out everywhere,
> whether it's in the docs, in the output of git-<Tab>, in status
> messages, or in UIs that show me huge hex numbers and say things like
> "blob" when they mean "file." svn presumably also has "plumbing" but I
> don't know about it and am happy not to.

I agree that there are some bad leaks in the documentation still. Yes,
"man git" is awful, the git-<Tab> thing is annoying, and a handful of
the git commands spew messages that are not helpful[*].

Those things should all get fixed, and all of them could with a tiny
amount of effort.

And git has been improving a lot in these areas. For example, "git
help" is quite sane and lists only 28 commands all of which are easy
to use and are generally well documented. (I just checked and in the
28 man pages "blob" only appears in a single paragraph). If 28
commands still sounds like a lot, note that "svn help" reports 30
commands. Meanwhile, a rewrite of "man git" has recently been
discussed to bury the plumbing.

So for the things you've mentioned, I don't see any problems to them
getting fixed, and I do see good progress toward making that
happen. One thing that would help is a new user to git carefully
noting annoyances, since experienced users grow accustomed to things
and don't always realize what should be changed.

-Carl

[*] Though, with a quick test below (create repo, add file, commit,
change file, commit), of git, hg, svn, and bzr it turns out that svn
is the noisiest, and hg is the only tool that is totally silent. Some
of that is because svn is expecting to do network transfer where it
does make sense to provide progress indication, (pretty much all of
the tools provide good indication when transferring data).

The git output does show one "huge hex number". The initial commit is
an oddball in that is spits this number out for no good reason, (no
subsequent commit does). Otherwise, the hex numbers only show up in
the logs, (and hg and bzr have basically the same kinds of huge
identifiers for commits---though bzr tries hard to hide them in the
most recent version).

Probably the best thing to take away from what follows is that the UI
for all of these tools really is quite similar. One thing that does
stand out in the commands below is that svn keeps the repository data
separate, (with all of the problems that that causes).

$ mkdir gittest; cd gittest
$ git init-db
defaulting to local storage area
$ echo hello > hello
$ git add hello
$ git commit -m "add hello"
Committing initial tree b4d01e9b0c4a9356736dfddf8830ba9a54f5271c
$ echo goodbye > hello
$ git commit -a -m "change to goodbye"

$ mkdir hgtest; cd hgtest
$ cd hgtest
$ hg init
$ echo hello > hello
$ hg add hello
$ hg commit -m "add hello"
$ echo goodbye > hello
$ hg commit -m "change to goodbye"

$ svnadmin create svnrepo
$ svn co file:///tmp/svnrepo svntest
Checked out revision 0.
$ cd svntest/
$ echo hello > hello
$ svn add hello
A         hello
$ svn commit -m "add hello"
Adding         hello
Transmitting file data .
Committed revision 1.
$ echo goodbye > hello
$ svn commit -m "change to goodbye"
Sending        hello
Transmitting file data .
Committed revision 2.

$ mkdir bzrtest; cd bzrtest
$ bzr init
$ echo hello > hello
$ bzr add hello
added hello
$ bzr commit -m "add hello"
added hello
Committed revision 1.
$ echo goodbye > hello
$ bzr commit -m "change to goodbye"
modified hello
Committed revision 2.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/fedora-maintainers/attachments/20061108/65a0f545/attachment.sig>


More information about the Fedora-maintainers mailing list