From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Yuri Khan Newsgroups: gmane.emacs.devel Subject: Re: Recording the date at which a change was pushed to Savannah Date: Wed, 3 Dec 2014 23:19:34 +0700 Message-ID: References: <9e4mtd1cdi.fsf@fencepost.gnu.org> <87r3whkw6w.fsf@uwakimon.sk.tsukuba.ac.jp> <87388xw2pn.fsf@fencepost.gnu.org> 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 1417623647 31414 80.91.229.3 (3 Dec 2014 16:20:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 3 Dec 2014 16:20:47 +0000 (UTC) Cc: David Kastrup , Emacs developers To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Dec 03 17:20:41 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 1XwCfJ-00016M-OM for ged-emacs-devel@m.gmane.org; Wed, 03 Dec 2014 17:20:33 +0100 Original-Received: from localhost ([::1]:42299 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwCfJ-0007rn-Al for ged-emacs-devel@m.gmane.org; Wed, 03 Dec 2014 11:20:33 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52541) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwCeR-000758-JC for emacs-devel@gnu.org; Wed, 03 Dec 2014 11:19:40 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XwCeQ-0007z1-Mj for emacs-devel@gnu.org; Wed, 03 Dec 2014 11:19:39 -0500 Original-Received: from mail-ie0-x22c.google.com ([2607:f8b0:4001:c03::22c]:62036) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XwCeO-0007yF-Iz; Wed, 03 Dec 2014 11:19:36 -0500 Original-Received: by mail-ie0-f172.google.com with SMTP id tr6so14117575ieb.3 for ; Wed, 03 Dec 2014 08:19:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=LsLPGyY361rdhvKEftW+OC1QQ5fjFwRqYpyDke+EW/o=; b=T/XS9w+oLWIba5+FaiNMLbO+kPmW+wEnp1TSigzRr/tPKdG/ztXVVCDxZoD/ekTqRn HSk4J9WJVLzBnWFeIPEB0Sx0lU+OHW6YdTDrKMTwiC3abS9ikjeURw79idKiFUpoj7KQ HuL9zE6TzZdSm9ZTX0q20asB8TrkkuplN1A1Kga3ciFIVvc25S9VOAsnW4nvqHd/4f+l EVMJ1pH2zjPlXurfOTK93DexBKA4hsAphhsMc/Ab3EZyyM01AXA/+sMNLomR5KD8azbo ZyHV+L0oXvH1IS4VGb/rUeTQZKuH3nUB/POIHiiB9hUd8qc9azaechrBEdF/r4yV2W/u LqIA== X-Received: by 10.50.8.71 with SMTP id p7mr9336311iga.9.1417623575006; Wed, 03 Dec 2014 08:19:35 -0800 (PST) Original-Received: by 10.107.48.82 with HTTP; Wed, 3 Dec 2014 08:19:34 -0800 (PST) In-Reply-To: X-Google-Sender-Auth: ikw84zwEvQnNbNIJsRhQ-AYwXhw X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:4001:c03::22c 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:178729 Archived-At: On Wed, Dec 3, 2014 at 8:18 PM, Stefan Monnier w= rote: > I think the fundamental thing missing is the "mainline": In Bzr, when > you look at the DAG of the `trunk', you know which commits are on the > mainline and which commits were made on a branch and later merged > onto the mainline. > > In Git, you don't know that because you only have the DAG and the > parents of a merge are "unordered". Parents are in fact ordered; you can find out each merge=E2=80=99s parents = by addressing them as ^1 for first parent, ^2 etc. This makes it possible to devise workflows that make it possible to determine the mainline history. For example, agree that when feature branches are merged into master, the previous master has to be the first parent and branches have to be the second and subsequent parents. Then the mainline is the transitive closure found by starting at current master and following only the first parents of each commit.