Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:73602 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 92835 invoked from network); 5 Apr 2014 07:30:12 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 5 Apr 2014 07:30:12 -0000 Authentication-Results: pb1.pair.com header.from=kris.craig@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=kris.craig@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.219.52 as permitted sender) X-PHP-List-Original-Sender: kris.craig@gmail.com X-Host-Fingerprint: 209.85.219.52 mail-oa0-f52.google.com Received: from [209.85.219.52] ([209.85.219.52:52430] helo=mail-oa0-f52.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 2F/51-16521-301BF335 for ; Sat, 05 Apr 2014 02:30:11 -0500 Received: by mail-oa0-f52.google.com with SMTP id l6so4547741oag.39 for ; Sat, 05 Apr 2014 00:30:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=XkrMn62018hA16CJW8BOUdF44PZH0fGHS9AFeRR7q30=; b=lbFdVv9idJrZ1CHEvKin5b77e/zCUa/cJHjrmsVk32T1jBAIMbtyFnAXrrjn7DsnCy 2wQHUjYLGOAamNv2VZ2nVmK4t6oNptx59qg5T6nGGH40hCx/Z/jKccD6f9dhUoCO94vf 8igxUFr4uKhSpoPs1t6qvoexIABT180U+dYwyUVS4rrUCRdApPeChXoul/YJSWNYTr4r O+mG2G4YhK8smoD8XVnDCqiCBu+YRGultvzia1e5Vs2RibeSQW7d4DbClbG4Y8Kv9uf5 lFo8KupKtLGgBbgYeqNII2Lp/qVxp9juLcklB9OA+Uv0UTEkZ0pRn5thqnpKryEFs9dX 5K8w== MIME-Version: 1.0 X-Received: by 10.182.43.132 with SMTP id w4mr968543obl.41.1396683008277; Sat, 05 Apr 2014 00:30:08 -0700 (PDT) Received: by 10.182.231.230 with HTTP; Sat, 5 Apr 2014 00:30:08 -0700 (PDT) In-Reply-To: <688A2215-A79A-417B-8E7A-76CF03DF9F35@gmail.com> References: <1396523991.2982.340.camel@guybrush> <1396527638.2982.350.camel@guybrush> <533F9C11.9000303@sugarcrm.com> <688A2215-A79A-417B-8E7A-76CF03DF9F35@gmail.com> Date: Sat, 5 Apr 2014 00:30:08 -0700 Message-ID: To: Alexey Zakhlestin Cc: Stas Malyshev , =?ISO-8859-1?Q?Johannes_Schl=FCter?= , Julien Pauli , PHP Internals Content-Type: multipart/alternative; boundary=001a11c303a292805904f6469ab0 Subject: Re: [PHP-DEV] Branching PHP6 From: kris.craig@gmail.com (Kris Craig) --001a11c303a292805904f6469ab0 Content-Type: text/plain; charset=ISO-8859-1 On Sat, Apr 5, 2014 at 12:19 AM, Alexey Zakhlestin wrote: > > On 05 Apr 2014, at 10:00, Stas Malyshev wrote: > > > makes it a nightmare to read. Furthermore, there's simply no need to > have > >> an ever-increasing number of dead branches that lead nowhere and never > >> merge back. If somebody wants to find a specific version, that's what > tags > > > > Branches are dirt-cheap in git, so dead branches is not a problem. > I disagree. When you have far more dead branches than active ones, with the gap only widening as time goes forward, it becomes increasingly difficult to quickly locate active branches of development. There's simply no reason to leave dead branches out there when quick access to past versions can be achieved through tags, which we're already doing anyway. > Also, > > the only dead branches are supposed to be release branches and very > > rarely feature branches, all the rest should be done in private branches > > and submitted as pull request. > In ideal Git workflow, release branches should never lie dead like this. Instead, they are merged back into the trunk branches-- no fast forward to preserve history-- and deleted. Tags are used to enable users to quickly go back to key points in history; i.e. version releases. Regarding RM control, the workflow I've suggested would not disrupt that at all. The RM would still have full control over what goes onto the release branch and when, as well as where and when tags are applied. But in this scenario, once the lifecycle of that release is over, the release branch is merged back in one last time and deleted. The history is preserved but it doesn't leave a dead branch. If we had been using this approach to-date, we'd have just a few branches instead of, well, dozens, most of which are defunct and no longer serve any purpose except to clutter. > The usual git workflow which I've seen in the wild is: > > 1. release branch is created > 2. release-specific commits are added > 3. tag (optionally signed) is created > 4. branch is removed > > In case development has to be restarted (for hotfix-patch), new branch is > created from the tag-point. > > The advantage is, that "branches" represent points of active development > and tags represent history. That's essentially correct. What we're doing right now is having more and more branches created to represent points of development that are no longer active. That is, in fact, exactly what tags are for in Git. --Kris --001a11c303a292805904f6469ab0--