Eric Kow <[EMAIL PROTECTED]> writes:
> [...] and if you do return, you can teach us many other useful things
> that Mercurial can do that we should pick up.

Off the top of my head, I can think of two things: dependency graph
visualization, and push over HTTP.

"hg glog" emits a dependency graph -- like camp-view or bzr viz or
gitk/giggle -- but it does so as ASCII, so that it's easy to use on a
charcell display like Emacs or an xterm.

hg has a "smart" server (usually deployed behind apache's mod_proxy)
that accepts patch pushes over HTTP using (I believe) the PUT command.
At my office this is only authenticated by SSL (tied to our yp
database), but I expect this could also work by GPG-signing prior to
pushing to the smart server.

HTTP pushing has a couple of benefits -- the user doesn't need to
install an MTA (cf. darcs send), HTTP is usually allowed through even
stupidly tight corporate firewalls, and it doesn't require the server
admin to hand out ssh (i.e. commit) access (cf. darcs push).

My naïve guess is that an HTTP PUT prototype could probably be
implemented in a couple of dozen lines of Perl CGI script, and that this
would be an adequate proof-of-concept to investigate further.

The same "smart" server also acts like ViewVC, so if you just open
"http://path.to/repo"; in your browser, you get a read-only view of the
repository with the most recent commits listed and such like, rather
than the usual Darcs case of just getting a directory listing of the
repo's root directory.

> I'm sure Mercurial is a fine revision control system,

I personally disagree.  In particular, merging is incredibly confusing
and painful in hg, and there are a number of annoying properties that
slowly contribute to cardiac arrest.  For example, "hg record" lets you
cherry-pick which hunks to record, but it changes the mtime of the
file -- so if it is still open in Emacs, Emacs thinks the file has been
changed (though it still has the same contents).  Another example would
be how you can only unrecord the newest patch:

    $ hg rollback
    rolling back last transaction
    $ hg rollback
    no rollback information available

There's also the obvious, fundamental difference that hg is (like git,
bzr and svn) history oriented, making cherry-picking (e.g. of bug fixes
but not new features) extremely onerous.  That fundamental difference is
why I continue investing time in improving Darcs rather than trying to
backport Darcs' best ideas into another VCS.

_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to