Lester Caine <les...@lsces.co.uk> writes: > jeremiah.do...@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. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php