Return-Path: X-Original-To: apmail-couchdb-dev-archive@www.apache.org Delivered-To: apmail-couchdb-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 52064103C4 for ; Mon, 29 Apr 2013 13:58:56 +0000 (UTC) Received: (qmail 83082 invoked by uid 500); 29 Apr 2013 13:58:55 -0000 Delivered-To: apmail-couchdb-dev-archive@couchdb.apache.org Received: (qmail 82770 invoked by uid 500); 29 Apr 2013 13:58:55 -0000 Mailing-List: contact dev-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list dev@couchdb.apache.org Received: (qmail 82730 invoked by uid 99); 29 Apr 2013 13:58:53 -0000 Received: from minotaur.apache.org (HELO minotaur.apache.org) (140.211.11.9) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 13:58:53 +0000 Received: from localhost (HELO mail-la0-f44.google.com) (127.0.0.1) (smtp-auth username rnewson, mechanism plain) by minotaur.apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 13:58:53 +0000 Received: by mail-la0-f44.google.com with SMTP id ed20so5476349lab.17 for ; Mon, 29 Apr 2013 06:58:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:content-type; bh=lM9Vw2qvgEoxIoEJ7/j5k9B2mu0fCtZw1Dy9CD4n4Ms=; b=Ffl5cg6b+1LDpoY3nI5M12YW4be8KpgsturYdeCHTfGB1rJ8or6uxbA9msQAi5+177 L8VWJhIOGeTiS3yCNWY3+idHODanUOyU7MQ1KW40alVz+1HmzVAa9Jlt4U4AWtvrABmh tsS0f+hjPUHErZVYYqGjmFpDlG5u6ihSqIAnWoGAFkCQ9BJmBk9n9inYXox9NmsWRlPS jC00YoBdH2l+sSJFoNkt9odvrJLVtOwqfdeu0dQe7CabFoSUPfm3LEw4OfbC2yNyCJ8t Ox6Bk6J7b/QQTMiSPMyiSO3XDUQ/TSl7ocImhOZNih+Y0Yldop4vNRJQSk5ZNatppxak 3UnA== MIME-Version: 1.0 X-Received: by 10.152.4.131 with SMTP id k3mr27729541lak.26.1367243931329; Mon, 29 Apr 2013 06:58:51 -0700 (PDT) Received: by 10.112.210.66 with HTTP; Mon, 29 Apr 2013 06:58:51 -0700 (PDT) In-Reply-To: References: Date: Mon, 29 Apr 2013 14:58:51 +0100 Message-ID: Subject: Re: [DISCUSS] Git workflow From: Robert Newson To: "dev@couchdb.apache.org" Content-Type: text/plain; charset=ISO-8859-1 Ok, my proposal is #1 from my original post with the refinement from Randall which I think we can distill as "you must not flatten a commit set". If your topic branch is best represented as >1 commit, then it must land on master as a merge commit. The other way to say it is that no topic branch is partially merged; it must be atomic. This means that branches, typically bug fix branches, which are naturally a single commit will simply fast forward. I'll let Randall respond to that point. I'm +0 on single commits merging from topic to master with a merge commit. B. On 29 April 2013 14:48, Noah Slater wrote: > Does anybody have any other thoughts on this? We need to choose something > as soon as possible. > > > On 25 April 2013 23:01, Robert Newson wrote: > >> Another point in favour of merge commits (non-ff) is that the branch >> merged to leaps forward atomically. It might not be appropriate to see >> the intermediate tree for a feature that consists of multiple commits. >> >> B. >> >> On 25 April 2013 22:59, Robert Newson wrote: >> > "I'm not sure where this notion that bisecting with merge >> > commits is harder comes from." >> > >> > From personal experience, but I concede this might point to my >> > deficiency and not git's. >> > >> > On 25 April 2013 22:57, Randall Leeds wrote: >> >> On Thu, Apr 25, 2013 at 2:35 PM, Robert Newson >> wrote: >> >>> >> >>> If we enhance the #1 proposal to include a final rebase against master >> >>> before merge, then master will be truly linear. That will make for >> >>> easier reading, easier backporting and will enable bisecting when >> >>> spelunking for regressions, etc. >> >> >> >> I disagree. >> >> >> >> git-bisect is smart enough to remove whole merges before diving into >> >> their constituent commits, IIRC, which reduces the possibility of >> >> false negatives if there were intermediate commits that had failing >> >> tests on the feature branch but the ultimate merge was clean and >> >> green. I'm not sure where this notion that bisecting with merge >> >> commits is harder comes from. >> >> >> >> Similarly, backporting a topic branch should look something like: >> >> >> >>> git checkout -b topic-branch-1.3.x-backport topic-branch >> >>> git rebase --onto 1.3.x master >> >> >> >> This would produce a branch (topic-branch-1.3.x-backport) which >> >> contains all the commits on topic-branch since it diverged from >> >> master, rebased onto 1.3.x. >> >> >> >> Reading history with merge commits can also be easier than the >> >> alternative FF-only history since there is a --merges option to >> >> git-log. This feature can, for instance, show you time line of topic >> >> introduction without the clutter of the individual commits that were >> >> necessary to produce them. >> >> >> >> If I am going to argue one way or another I would actually suggest >> >> that feature or topic branches always merge with --no-ff. >> > > > > -- > NS