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: preferring mercurial Date: Fri, 10 Jan 2014 02:31:01 +0900 Message-ID: <87iottf4fe.fsf@uwakimon.sk.tsukuba.ac.jp> References: <3905544.suqMZffgM5@descartes> <874n5d6whz.fsf@gaia.iap.fr> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1389288684 17053 80.91.229.3 (9 Jan 2014 17:31:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 9 Jan 2014 17:31:24 +0000 (UTC) Cc: =?utf-8?Q?R=C3=BCdiger?= Sonderfeld , Neal Becker , emacs-devel@gnu.org To: =?utf-8?Q?Fran=C3=A7ois?= Orieux Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jan 09 18:31:30 2014 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 1W1JS0-0005BC-0Z for ged-emacs-devel@m.gmane.org; Thu, 09 Jan 2014 18:31:24 +0100 Original-Received: from localhost ([::1]:53279 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W1JRx-0002ri-A9 for ged-emacs-devel@m.gmane.org; Thu, 09 Jan 2014 12:31:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39196) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W1JRn-0002pC-7J for emacs-devel@gnu.org; Thu, 09 Jan 2014 12:31:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W1JRf-00075Y-Tv for emacs-devel@gnu.org; Thu, 09 Jan 2014 12:31:11 -0500 Original-Received: from mgmt2.sk.tsukuba.ac.jp ([130.158.97.224]:51373) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W1JRf-00075K-Ce for emacs-devel@gnu.org; Thu, 09 Jan 2014 12:31:03 -0500 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 5D429970972; Fri, 10 Jan 2014 02:31:01 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id 51E841A2E82; Fri, 10 Jan 2014 02:31:01 +0900 (JST) In-Reply-To: <874n5d6whz.fsf@gaia.iap.fr> X-Mailer: VM undefined under 21.5 (beta34) "kale" 2a0f42961ed4 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:167947 Archived-At: Fran=C3=A7ois Orieux writes: > My resume of all the posts I have read is that git and hg are > technically equivalent. AFAICS they are very much *not* technically equivalent. They may be equal in power, especially at the UI level, but git exposes a much cleaner interface to the internal model of blobs (file content), trees (file directories), and commits *to the user*. This means that git is more hackable: you can script it with shell, you can script it with Python, you can script it with Emacs Lisp, or you can write C. Bzr definitely loses big here: the internals are layer upon layer upon layer of complex Python API. I don't know about Mercurial, haven't looked at its internals. Git invites you to play with the DAG, just as Lisp invites you to play with lists. Is this *better*? That's a matter of taste. But different? Definitely. > Hg is cleaner, easier with better doc and ui I disagree, but again it's a matter of taste. > with a bigger respect of history. That is a lie, and you should stop repeating it, and tell people who try to tell it to you to stop, too. Nothing has more respect for history than git. Using git, you can forget history (by deleting or moving refs) but you can't change it or delete it.[1] That's why git doesn't have backups (the way hg and bzr save bundles if you do a "commit --amend" or a "strip") for the operations that fans of other VCS call "history-changing" -- it doesn't need them. History isn't *changed*, it is recreated -- and the original history remains accessible to the user. AFAIK hg and bzr *do* destroy history when they perform operations like commit --amend, strip, and rebase. For sure, git *does not*. It's true that you can alter the presentation of history in git relatively easily compared to other VCSes. But it's possible in them, too, and (AFAIK) in them it does destroy original history in the process of remaking it. Footnotes:=20 [1] If you don't care about parts of history you've forgotten, git-gc will eventually delete forgotten history -- and only forgotten history. But because of the reflog, even if you forget, git won't, for at least 30 days (by default).