From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Stephen J. Turnbull" Newsgroups: gmane.emacs.devel Subject: Re: On the subject of Git, Bazaar, and the future of Emacs development Date: Wed, 27 Mar 2013 17:55:01 +0900 Message-ID: <87mwtpb4t6.fsf@uwakimon.sk.tsukuba.ac.jp> References: <87ehf1cwc4.fsf@maru.md5i.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 X-Trace: ger.gmane.org 1364374516 3150 80.91.229.3 (27 Mar 2013 08:55:16 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 27 Mar 2013 08:55:16 +0000 (UTC) Cc: emacs-devel@gnu.org To: Michael Welsh Duggan Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Mar 27 09:55:41 2013 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UKm8x-0003KA-AZ for ged-emacs-devel@m.gmane.org; Wed, 27 Mar 2013 09:55:39 +0100 Original-Received: from localhost ([::1]:33975 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKm8Z-0007mE-D1 for ged-emacs-devel@m.gmane.org; Wed, 27 Mar 2013 04:55:15 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:51336) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKm8V-0007l6-81 for emacs-devel@gnu.org; Wed, 27 Mar 2013 04:55:12 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UKm8T-0004ee-Lr for emacs-devel@gnu.org; Wed, 27 Mar 2013 04:55:11 -0400 Original-Received: from mgmt2.sk.tsukuba.ac.jp ([130.158.97.224]:54331) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UKm8T-0004dR-0R for emacs-devel@gnu.org; Wed, 27 Mar 2013 04:55:09 -0400 Original-Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp [130.158.99.156]) by mgmt2.sk.tsukuba.ac.jp (Postfix) with ESMTP id 8FD6D97090A; Wed, 27 Mar 2013 17:55:01 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id 3F3511A3D97; Wed, 27 Mar 2013 17:55:01 +0900 (JST) In-Reply-To: <87ehf1cwc4.fsf@maru.md5i.com> X-Mailer: VM undefined under 21.5 (beta32) "habanero" b0d40183ac79 XEmacs Lucid (x86_64-unknown-linux) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 130.158.97.224 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:158276 Archived-At: Michael Welsh Duggan writes: > I see these Git versus Bazaar arguments pop up every now and then on > this forum. I must admit my experience with Git has been better than > that with Bazaar, but I have to ask, why isn't Mercurial being > considered? Nobody in the community is using it to develop Emacs, would be the reason I expect. Mercurial is perfectly serviceable, XEmacs and Python both use it. However, it really isn't as powerful or coherent as git, and the DAGs it creates tend to be rather ugly unless you have a standard project-wide workflow. The lack of a good colocated branch story[1] hurts in many workflows (as indeed it does in Bazaar). Nobody does submodules well yet, but I'll bet git gets there first because git's implementation is such a natural extension of Linus's original model. Despite the constant criticism of git's command-line UI[2], IMO it's a red herring for Emacs use[3]. In git's favor, git has a powerful (though incomplete in some respects[4]) model of version control, consistently applies it, and exposes its full power to all users. Perhaps that resembles an editor you know? Not to mention that the operation of "commit", basic to all version control, is implemented by adding a link to the head of a singly-linked list. Does that resemble a programming language you've heard of?[5] Now it's true that perhaps the majority of Emacs developers want a VCS that just stays out of their way. Bazaar and Mercurial are better choices for that, it seems, but only if you restrict yourself to the CLI. But I think that that desideratum will be more than adequately satisfied via Lisp interfaces to git[3]. OTOH, there is a large contingent of Emacs developers whose preferred VCS is git for various reasons. Of course, I've long been a git advocate, so the above is a selective account of the merits and demerits. Nevertheless, HTH. Footnotes: [1] IMHO YMMV. [2] Which criticism I admit I have no sympathy for. Of the plethora of commands, I admit I use quite a few (16 = init, add, rm, mv, commit, status, log, diff, pull, push, branch, checkout, reset, gitk, tag, help) frequently, but I rarely use options other than -m and -F to commit, -b to checkout, and - to log. I suppose you noticed "help", well, (a) I advise people on git a lot and need to refer to help for workflows I don't use, and (b) I grant that infrequently used commands like rebase are indeed complex, but their power more than justifies the time to refer to help. But I suppose that's just me. ;-) I think that one big problem is not the CLI per se, but that people who have a non-git mental model of VCS have great trouble making sense of the way branch, checkout, and reset interact. Also, many people dislike git's practice of counting versions "backward" from HEAD rather than "forward" from the repository root. [3] You've heard of vc.el and magit, I suppose? [4] Rename and first-class directory support. [5] The analogy is not perfect, of course, because a cons can have only one cdr, while to implement merges a git commit is allowed to have multiple parents.