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,gmane.comp.version-control.bazaar-ng.general Subject: Re: Emacs Bazaar repository Date: Sat, 15 Mar 2008 08:34:16 +0900 Message-ID: <87r6ecsww7.fsf@uwakimon.sk.tsukuba.ac.jp> References: <87skyvse7k.fsf@xmission.com> <86ejae96t4.fsf@lola.quinscape.zz> <47DA3601.3040507@arbash-meinel.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1205537210 2360 80.91.229.12 (14 Mar 2008 23:26:50 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 14 Mar 2008 23:26:50 +0000 (UTC) Cc: schwab@suse.de, Eli Zaretskii , bazaar@lists.canonical.com, Matthieu Moy , emacs-devel@gnu.org To: John Arbash Meinel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Mar 15 00:27:18 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JaJIP-0006JU-Af for ged-emacs-devel@m.gmane.org; Sat, 15 Mar 2008 00:26:41 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JaJHp-0003GM-PM for ged-emacs-devel@m.gmane.org; Fri, 14 Mar 2008 19:26:05 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JaJHl-0003Ej-Ip for emacs-devel@gnu.org; Fri, 14 Mar 2008 19:26:01 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JaJHk-0003Da-77 for emacs-devel@gnu.org; Fri, 14 Mar 2008 19:26:01 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JaJHj-0003DJ-R7 for emacs-devel@gnu.org; Fri, 14 Mar 2008 19:25:59 -0400 Original-Received: from mtps02.sk.tsukuba.ac.jp ([130.158.97.224]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JaJHf-0003wI-Rv; Fri, 14 Mar 2008 19:25:56 -0400 Original-Received: from uwakimon.sk.tsukuba.ac.jp (uwakimon.sk.tsukuba.ac.jp [130.158.99.156]) by mtps02.sk.tsukuba.ac.jp (Postfix) with ESMTP id 6BD4B8004; Sat, 15 Mar 2008 08:25:53 +0900 (JST) Original-Received: by uwakimon.sk.tsukuba.ac.jp (Postfix, from userid 1000) id 8E35C1A29EF; Sat, 15 Mar 2008 08:34:16 +0900 (JST) In-Reply-To: <47DA3601.3040507@arbash-meinel.com> X-Mailer: VM 7.19 under 21.5 (beta28) "fuki" 2785829fe37c XEmacs Lucid X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:92630 gmane.comp.version-control.bazaar-ng.general:38627 Archived-At: John Arbash Meinel writes: > (I believe 'git log' defaults to showing the log based on a local sort > by date. Neither one tries to figure out that A1 and A2 were merged into > tip, which is another step that 'bzr log' does.) YAGNI most of the time, though. John, I know where you're coming from, but it looks like you're throwing up red herrings and making excuses. There's no question that git is good enough for Emacs on a day-to-day basis. bzr's performance problems make me wonder if it is. It would be interesting to see a "time git rev-list --topo-order" (which does the same thing as "bzr log" AFAICS) on the relevant repo. Here are two timings on my most complicated XEmacs git repo (but it only has 601 changesets, including 40 branches and 38 merges): chibi:git-staging steve$ time git-rev-list --topo-order HEAD [[ output omitted ]] real 0m1.131s user 0m0.060s sys 0m0.124s chibi:git-staging steve$ time git-rev-list --topo-order HEAD | wc 601 601 24641 real 0m0.423s user 0m0.060s sys 0m0.130s So let's scale that up to 90,000 commits assuming O(n) (which may not be implausible for a topological sort on a DAG): user time of 9s. I conclude that git chose the right representation for a DAG of changesets right off the bat. It is a DAG of changesets. AFAICT, both bazaar and Mercurial said, "whoa, that's going to be inefficient in some operations", and immediately chose array representations with some kind of temporal index (temporal because they want all inserts in the database to be file appends for ACID and efficiency). Linus said "Listen to Tony", and he proved right when the "git pack" format was introduced. Original Arch and Darcs are "set of changeset"-oriented, so they can't be compared to the DAG-oriented ones on this dimension; they can do things directly that git, bzr, and hg can't (although I wouldn't put it past Linus and/or other gitfans to implement efficient indirect ways to accomplish them). This is a consequence of what I posted a couple of months ago. git is a Lisp specialized to manipulating revision DAGs and accessing the underlying revisions. None of this is intended to specifically advocate git for the Emacs repo. Mercurial is probably good enough (an estimate after using it with XEmacs, a comparable codebase but only about 500 revisions, since early December). bzr is likely good enough too. Both have UI advantages over git at the moment, and bzr log is definitely the best (if you ignore how slow it is), but why bother with "bzr log" when "gitk" is almost certainly equally fast (and much faster to update than bzr log is to run again)? OTOH, many Emacs developers won't run any vcs by hand, they'll use vc.el or pcl-.el (which doesn't exist for vcs in (git hg bzr) AFAIK, but if Emacs chooses one, I bet it's a matter of days). In that case it's important that *all* vc and pcl operations be acceptably efficient.