From: "Stephen J. Turnbull" <stephen@xemacs.org>
To: "Jordi Gutiérrez Hermoso" <jordigh@octave.org>
Cc: David Kastrup <dak@gnu.org>, emacs-devel@gnu.org
Subject: Re: Prefer Mercurial instead of git
Date: Sun, 05 Jan 2014 21:17:14 +0900 [thread overview]
Message-ID: <8738l2k4hh.fsf@uwakimon.sk.tsukuba.ac.jp> (raw)
In-Reply-To: <1388846441.11337.25.camel@Iris>
Jordi Gutiérrez Hermoso writes:
> I don't think Stephen's a particular expert in this
I don't either. But since I'm not an expert, why listen to me?
Listen to Barry Warsaw and Karl Fogel, who invited me to coauthor,
instead:
http://www.python.org/doc/peps/pep-0374/
http://www.emacswiki.org/BzrForEmacsDevs
And to get David K to recommend me given how often we've been at each
others' throats over the decades is a pretty good trick, one I'm proud
of.
> And I think Mercurial is a good choice, and I will choose it again,
> and again.
Technically, it is a good choice. I'm not unhappy with it for XEmacs
development, although if things were moving as fast as they do in
Emacs I might sing a different tune. Technically Bazaar was a good
choice. As it turned out, the Bazaar developers were very good at
fixing technical problems, including using different or even new
algorithms when necessary. But it then turned out that once they
weren't paid to do Bazaar, they stopped entirely. I didn't expect
that, and it kills the deal, since there remain serious technical
problems that affect some users (eg, network performance).
Nevertheless, as ESR and DAK have been at pains to point out, the
problem with Mercurial, like the problem with Bazaar, isn't technical.
The problem is that Mercurial isn't git. Git definitely is the leader
now. Git is "cool". Git is more flexible (neither Mercurial nor
Bazaar can support workflows that use colocated branches heavily).
Git has more growth potential: new techniques for manipulating DAGs
are developed in and for git. (They can't be developed *in* Mercurial
or Bazaar command language, you have to go to Python level to develop
useful new features.) Mercurial's supporting applications don't seem
to improve as quickly (at least, not those distributed with Mercurial,
cf. gitk vs. hg view). So git is clearly winning the popularity
contest, both in general and on emacs-devel.
I actually see two features that git doesn't provide (and I don't know
how git would provide them robustly) in Bazaar (bound branches and
mainline-respecting operations). I don't see any in Mercurial.
Mercurial's big advantage is that it's more comfortable for people who
are already used to CVS or Subversion and never want to think about
VC. For many Emacs developers, that is an attraction. It's not hard
to use git that way, though -- it's just that if you ask people who
use git's unique capabilities, they won't tell you about it :-/.
But like Bazaar, it's hard to see Mercurial as a starting point for
future evolution. As applied to programming, VC is an editing task,
really. If developing new ways of applying editing technology is what
Emacs is about, serious consideration should be given to giving up
comfort for a while. Eg, it's hard to see how Mercurial or Bazaar
could directly support a Darcs-like patch type, but in git it's
simple: just a pair of SHA1s. (Creating a "patch algebra" for that
would be harder; it would have to involve a subfile type so that files
become composite, just as trees are in current git -- but creating the
subfile type is trivial in git, and the submodule kludge suggests that
extending to a patch algebra might not be as hard as you'd think --
git's data structures are remarkably flexible. Add Emacs Lisp for
creating new patch == autoedit types and wow, you might have something
new, bright! shiny!)
Also, people who think in terms of "commit" and "update" being
heavyweight (network) operations tend to insist on associating commits
with development milestones. They deprecate git's DAG-traversing as
useless and DAG-editing as "history modification". Nothing wrong with
that -- as long as they save their opinions for their own workflows.
Micro-commits, DAG compression, and even the much-maligned rebase all
have their place in other workflows.
Of course, as someone who frequently uses rebase, micro-commits, and
similar techniques in my own workflows, I'm biased. But between the
growth possibilities inherent in git's simpler, more extensible
architecture, and current workflows that are difficult to impossible
to emulate with other VCSes, I think git is both technically and by
popularity the obvious choice (if Emacs is going to switch VCSes).
next prev parent reply other threads:[~2014-01-05 12:17 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-03 21:52 Prefer Mercurial instead of git Jordi Gutiérrez Hermoso
2014-01-04 10:11 ` David Kastrup
2014-01-04 10:20 ` David Engster
2014-01-04 10:33 ` Eric S. Raymond
2014-01-04 13:13 ` Jordi Gutiérrez Hermoso
2014-01-04 13:29 ` David Engster
2014-01-04 14:23 ` David Kastrup
2014-01-04 14:38 ` Jordi Gutiérrez Hermoso
2014-01-04 15:19 ` David Kastrup
2014-01-04 15:24 ` Jordi Gutiérrez Hermoso
2014-01-04 16:51 ` David Engster
2014-01-04 17:16 ` Jordi Gutiérrez Hermoso
2014-01-04 17:31 ` David Engster
2014-01-04 17:40 ` Jordi Gutiérrez Hermoso
2014-01-04 18:34 ` Alan Mackenzie
2014-01-04 19:26 ` Óscar Fuentes
2014-01-04 20:18 ` Stefan Monnier
2014-01-05 11:07 ` Leo Liu
2014-01-04 17:35 ` Eli Zaretskii
2014-01-04 18:25 ` Paul Eggert
2014-01-04 20:03 ` Eli Zaretskii
2014-01-06 12:26 ` Darren Hoo
2014-01-06 14:58 ` Stefan Monnier
2014-01-06 17:44 ` Eli Zaretskii
2014-01-06 19:33 ` Paul Eggert
2014-01-04 14:40 ` Jordi Gutiérrez Hermoso
2014-01-05 12:17 ` Stephen J. Turnbull [this message]
2014-01-05 13:19 ` Jordi Gutiérrez Hermoso
2014-01-05 13:25 ` Florian Weimer
2014-01-05 13:55 ` Jordi Gutiérrez Hermoso
2014-01-05 15:38 ` Óscar Fuentes
2014-01-05 16:18 ` Jordi Gutiérrez Hermoso
2014-01-05 16:41 ` Eric S. Raymond
2014-01-05 17:09 ` Óscar Fuentes
2014-01-05 23:26 ` Jordi Gutiérrez Hermoso
2014-01-06 0:38 ` Óscar Fuentes
2014-01-06 1:01 ` Jordi Gutiérrez Hermoso
2014-01-06 0:03 ` David Kastrup
2014-01-05 17:54 ` Stephen J. Turnbull
2014-01-05 23:03 ` Dov Feldstern
2014-01-05 23:23 ` Karl Fogel
2014-01-05 23:37 ` Dov Feldstern
2014-01-06 4:02 ` Stephen J. Turnbull
2014-01-05 13:56 ` David Kastrup
2014-01-04 14:12 ` Rüdiger Sonderfeld
2014-01-04 16:08 ` Sebastian Wiesner
2014-01-04 16:41 ` Jordi Gutiérrez Hermoso
2014-01-04 18:37 ` David Kastrup
2014-01-04 18:44 ` Alan Mackenzie
2014-01-04 19:04 ` Jordi Gutiérrez Hermoso
2014-01-04 19:30 ` Óscar Fuentes
2014-01-05 16:23 ` Eli Zaretskii
2014-01-05 16:46 ` Eric S. Raymond
2014-01-05 17:03 ` Eli Zaretskii
2014-01-05 16:52 ` Óscar Fuentes
2014-01-05 17:17 ` Eli Zaretskii
2014-01-05 17:55 ` Óscar Fuentes
2014-01-05 18:07 ` Eli Zaretskii
2014-01-05 18:54 ` Óscar Fuentes
2014-01-05 21:07 ` Sean Sieger
2014-01-06 0:12 ` David Kastrup
2014-01-06 0:21 ` Rostislav Svoboda
2014-01-06 0:30 ` Karl Fogel
2014-01-06 2:24 ` Jay Belanger
2014-01-06 16:51 ` Karl Fogel
2014-01-06 17:13 ` Jay Belanger
2014-01-06 3:47 ` Eli Zaretskii
2014-01-05 3:13 ` Jay Belanger
2014-01-05 17:16 ` Sebastian Wiesner
2014-01-06 0:17 ` David Kastrup
2014-01-05 2:14 ` Karl Fogel
-- strict thread matches above, loose matches on Subject: below --
2014-01-06 13:08 grischka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8738l2k4hh.fsf@uwakimon.sk.tsukuba.ac.jp \
--to=stephen@xemacs.org \
--cc=dak@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=jordigh@octave.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.