Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:58975 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 32339 invoked from network); 16 Mar 2012 03:36:59 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 16 Mar 2012 03:36:59 -0000 Authentication-Results: pb1.pair.com header.from=jeremiah.dodds@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=jeremiah.dodds@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.210.42 as permitted sender) X-PHP-List-Original-Sender: jeremiah.dodds@gmail.com X-Host-Fingerprint: 209.85.210.42 mail-pz0-f42.google.com Received: from [209.85.210.42] ([209.85.210.42:54527] helo=mail-pz0-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 6B/40-28377-A55B26F4 for ; Thu, 15 Mar 2012 22:36:59 -0500 Received: by dang27 with SMTP id g27so6662932dan.29 for ; Thu, 15 Mar 2012 20:36:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:references:date:in-reply-to:message-id:user-agent :mime-version:content-type; bh=+wwU+rDcjOAEb2KUW6H3TQte0APBcA3cxXKIk+1ivOk=; b=txRLdTyxECFylxLUK2fZfkTXPTkzNA3/2snE24/bV9RPTmJU/0qJB4morWBWHsSgT+ C/L/lt6Kx114flSDS9C5fbKNvaQkR9LotzEiLHj1jbnuSQUK9feAt7WJLOZFcTwN3qUD eXUUK7dmr7gGovL7m04rFF4QBLMRw2euK4i2j0rB3Dso25405dMAPZY9PG4RHhvjcu+1 1ekvDvqmzPAIdXT3uErpoUMqS+sDNvVIrNiUlD78MxL5BE4lMlRjBzu0212NOFU4z87u OripfymcSe7h5vAood3bQNGnXUKtVpKqhzBYnbuGOkB6Dk+QA5ePWJPPUiKgewFbSAGA OVAA== Received: by 10.68.216.229 with SMTP id ot5mr4551716pbc.148.1331869016166; Thu, 15 Mar 2012 20:36:56 -0700 (PDT) Received: from destructor (ip98-180-233-170.cl.ri.cox.net. [98.180.233.170]) by mx.google.com with ESMTPS id a1sm3233008pbj.72.2012.03.15.20.36.51 (version=SSLv3 cipher=OTHER); Thu, 15 Mar 2012 20:36:54 -0700 (PDT) To: internals@lists.php.net References: <87zkbwby4d.fsf@gmail.com> <4F536486.6050801@lsces.co.uk> <87aa3wqv6u.fsf@gmail.com> <4F539B2B.9050308@lsces.co.uk> Date: Thu, 15 Mar 2012 23:36:34 -0400 In-Reply-To: <4F539B2B.9050308@lsces.co.uk> (Lester Caine's message of "Sun, 04 Mar 2012 16:41:15 +0000") Message-ID: <87ehstcj3x.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [PHP-DEV] Git Migration: Status Update From: jeremiah.dodds@gmail.com (Jeremiah) Lester Caine writes: > jeremiah.dodds@gmail.com wrote: >> I hope that clarifies things a bit. It definitely doesn't make grokking >> things a whole lot easier, and it is certainly *possible* to follow a >> very svnish workflow using git (and may sometimes make sense to, >> although I am struggling to thing of such a time). > > I've been using Hg myself for the 'DVCS' style of working. This allows me to > publish my own ports of things which others can follow, but from which I can > push things back to the original project as required. I'm still not convinced > that the 'production' branches such as PHP5.3 can be run without some element of > management, although of cause a release will still be packaged as a tarball set > and then frozen. On Hg I just pull a particular tarball ... such as PHP5.3.10 > ... as I require it direct from the repo but some of the projects I am working > with have now lost the 'master' codebase simply because groups of developers are > now doing their own thing. The overall flexibility of DVCS still needs a mindset > of maintaining a code base that follows the master route plan? Which may well be > a more 'svnish' way of working when testing and committing production ready > code? I use Hg at work, and while it's a pretty fine DVCS, it's more in line with SVN's mindset than git's in parts. Namely, Hg focuses, afaict, on making it easy to move the commit history forward in time by abstracting over the manipulation of the DAG. Git focuses on manipulation of the DAG -- the line between locally-visible and remotely-visible stuff is more blurry in Hg than in git, and it feels like you're using the tool in unintended ways when you clarify that line in ways Hg doesn't expect. That's not necessarily a bad thing or whatnot, just a thing. > The question I think that needs to be asked is 'should experimental development > branches exist in the master code base?' all very easy to do with DVCS, but is > it practical. > Does it not make sense to clone the experimental work from another > source, and keep the main codebase tidy with just proven pushes that follow the > production path. There is nothing actually stopping someone producing their own > private branch and sharing that while it is being developed, just pushing the > results back to the relevant master branch when development work has been > completed? If the experimental branches are long(er)-lived and worked on or of interest to people who'd be checking out master, sure. There's definitely a balancing act -- you don't want 500 experimental branches laying around yer main repo, but that probably won't happen, in no small part because when you merge the experimental branch in to a master release you can just delete it. The commits won't be lost, but it won't be showing up in `git branch -ar` or whatnot -- the branch is just a pointer to a node in the DAG to git. There isn't the concept of "permanent always-stick-around-branch" like in Hg, unless you decide to make it so. For a good example of "hey keep these relevant branches around on master", take a look at https://github.com/symfony/symfony . There's a few branches sitting around on their main repo at any point in time -- the master, development branch, maybe some other feature, whatever. Like you mention, people interested in a particular niche of the framework are pulling from branches on each others git repositories, and there are a ridiculous amount of branches in the ecosystem, see https://github.com/symfony/symfony/network . For a bad example, look at the git mirrors of emacs (at least the last time I looked at them). Yeah, there's reasons for it there, but the point is that having too many of them produces noise. Which is true. I don't think there are any hard and fast rules here, but at least git makes it easy to change things up if they lean too far in either direction.