I think I agree with all that.

My only thought so far about the load issue is that the load is less the fewer changesets have to be queried each 'poll', so perhaps it would be good to have a commit hook in SVN that sends a quick request (without even waiting for a reply) to Hg/Git scripts that just notifies them that they should poll. There is no polling at fixed intervals then (e.g. daily, where a lot of commits need to be picked up at once, or every few minutes which might often find no commits and be a waste of resources), but neither does it create a bottleneck (SVN commits don't have to wait for mirrors to be updated before succeeding). Mirroring could just kick in a few seconds after each commit and pick it up.

Another possibility, and actually I think this is a good one, is to mirror to just Hg or Git, and then use Hg-git (a Mercurial extension) to mirror one from the other. Then only one mirror needs to interact with SVN, so the load is less, but we support both major DVCSes. The particularly nice thing about Hg-git is that it does changeset conversion losslessly, so if this is used, people using Hg and Git can collaborate, too. Conversion to/from SVN isn't lossless unfortunately. :-)

(For now, I'm just using hgsubversion to get SVN into a local Hg repo, but will change to use an official mirror basically immediately if we can create one, in order to help reduce the load.)


On 28/04/11 2:30 PM, dukeofgaming wrote:
Hi Ben, I'm sorry I did a wrong remark there, but I see you saw what I

The nice thing about open source projects is that communities develop
naturally around them, it becomes an ecosystem, everything tends to lean
towards balance, when a change is intended to be made it should be allowed
to develop organically. Point here is: lets not try to force DVCSs but
rather keep the door open so the community can pass through it whenever it
feels ready, so the dilema of current devs vs potential devs never happens.

My advice here is —if current devs are willing— to pilot test a DVCS on a
small part of the project where it can be used primarily (as in not with
subversion); this would be a very healthy exercise to understand the why of
this generalized DVCS-ish concern.  Another advice is to open the discussion
towards the choice of a DVCS in comparison to the project's interests and
demographics (e.g. if there are more windows users than mac/linux, mercurial
would be preferred, if its the other way around&&  there is an underlying
git community, git might be best).

To all who doubt DVCS, this is a good read for you:

In relation to Drak's remarks, yes, I think the maturity of the tools has
contributed to its increased usage, and also, the very cool services around
them, such as github.com and bitbucket.org.

Finally, I think from here on, the conversation should be focused on finding
a technical solution to the load problem (I'm not familiar with the setup,
but if I think of something I'll post it).



On Wed, Apr 27, 2011 at 10:29 PM, Ben Schmidt<mail_ben_schm...@yahoo.com.au

Just for the record....I didn't say popularity was a reason to use a DVCS.
I said the popularity of DVCSes might cause server strain (if a lot of
people want to convert the public SVN repo to a distributed one, downloading
all the changes in the repo, which SVN really wasn't designed for, that
would be a heavy load--and positively correlated to popularity: more
popular, more conversions, more load).

I agree with your closing point, though: I'd love to see us look for a
low-load way of providing an Hg mirror and/or a Git mirror. I also think
that either a mirror or a change of VCS may attract developers in the
medium-term. However, I also think that current developers carry a lot more
weight than potential developers, and it's important for them to be able to
work in a way that is comfortable for them. So a mirror or two would be
nice, and I'd push for that, but a change of official repo I will merely
suggest be considered longer term.


On 28/04/11 1:07 PM, dukeofgaming wrote:


I'm not a frequent poster in the list but I thought I'd really should give
my 1 cent here when I saw "popular" being an argument for using DVCSs, its
not, and its neither fashion nor cargo cult, it is just a plain eye opener
experience of how neither SVN or CVS are the base of all versioning (two
its creators —Brian Fitzpatrick and Ben Collins-Sussman— have acknowledged
this by saying "sorry about that" with regards to Subversion) and that
better and more natural ways to collaborate and integrate code.

I could provide an epically long argument here, but instead I'll link to
one I've already made, diagrams and graphics included =):


So, I don't want to make debate here of wether centralized is better than
distributed (because the point is moot), but I think its not a good
situation for the community to have a previously open door to DVCSs now

Perhaps a solution can be found to even open the door to Mercurial (that
an excellent place to start with DVCSs because its simplicity and
straight-forwardness) in addition to git in such a way that doesn't stress
the server?.



On Wed, Apr 27, 2011 at 9:40 PM, Drak<d...@zikula.org>   wrote:

  On 28 April 2011 07:55, Ben Schmidt<mail_ben_schm...@yahoo.com.au>

  I realise that at least for now, PHP is sticking with SVN. No problems.

I realise this is not the topic of discussion but I have to say, that
overall, a switch to DVCS would make a huge difference to PHP development
life cycles.  Git for one, makes contributing and integration of patches
completely different experience.  It encourages more community
without impinging on quality since you don't need to grant commit
permissions.  The whole workflow of creating and integrating patches is
faster and more simple because you can switch context from branch to
almost instantly allowing those with commit permissions to verify if a
contribution is worth merging or not.  It's much less work than SVN and
ease naturally attracts contributors.  Merging is not a pita like with

However, given the recent security breach there is another side:
with a git repository is virtually impossible because every commit hash
generated from the previous ones, so if your servers were compromised
a change in the past history would require alteration every single commit
hash since that change and the resulting HEAD hash would be different.
  Since hashes are  based on the commit contents it's just not feasible
if SHA1 was one day compromised that you could successfully tamper with a
previous commit and engineer the calculations so the current HEAD hash
remained unchanged.  If a commit blob (on the file-system) was altered
manually, your git repo would simply fail to validate the next time you
it. In every scenario you'd know immediately something was wrong and not
have to go looking for it commit by commit.

Something to consider again in the future at least.



PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to