# Git Migration: An Update

- Thread: https://externals.io/message/56934
- Original archive: https://news-web.php.net/php.internals/56934
- Started by David Soria Parra on 2011-12-15T16:12:53+00:00
- Messages: 5
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #56934 — David Soria Parra — 2011-12-15T16:12:53+00:00

URL: https://externals.io/message/56934#56934

Hi Internals,

three months ago we decided to move PHP to Git. I want to give you
an update what happend so far and what we are working on.

So far we have:

  1. A working import from php-src.
  2. A basic server setup.
  3. A working Karma implementation.

A little bit more details:

  We will use y3.php.net as our git server. This server will run nginx
as a webserver. We will provide a web frontend using gitweb.  You can
pull using HTTP and Git protocols. Pushs will be done usign HTTPS only.
You will use the same credentials that you used for SVN. A new Karma
implementation was written and will be tested within the next weeks.
 
  The minimum required Git version for cloning using the Git protocol
will be 1.4.0. The minimum for pushing will be Git 1.6.5.3.

  The migration will require some adjustements to the repository and
a proper migration of SVN properties. We also need to rewrite author
information on the repository. The Git Author information consists
of a name and a email address. Therefore we will rewrite the autor
information and use your stored Name and your username@php.net email
address as the new author information. For example:

  SVN commit author | Git commit author
  ------------------------------------
  dsp               | David Soria Parra <dsp@php.net> 
  gwynne            | Gwynne Raskind <gwynne@php.net>

IMPORTANT: If you do not like us to use the name stored in the master
DB for your account please let me know and we will change that.

  About SVN properties: We will not use 'keywords' anymore, unless
a certain code needs it. I'm aware that code like reflection use
the keyword information in their `phpinfo()` text. Should we enable
keywords for this file or do we change the code?
  With the transition to Git one of the main attributes of keywords
are gone. Git version nuimbers are not incremental so I don't see
much point in using them anymore.

  SVN ignores will be converted to a .gitignore file. 

TODO (What comes in mind atm):

  1. Compile a list of scripts/sites that need to be changed in order
     to work with the git repo. Some sites are already on the list:
     - http://ci.qa.php.net
     - http://snaps.php.net
     - http://edit.php.net
     - http://lxr.php.net
  2. Finish the setup of the y3.php.net server. We need to figure
     out how to make http digest auth work nginx. We also need to
     setup email hooks, etc.
  3. Test the current karma implementation. More details will follow.
  4. Setup github mirroring

Helping with the migration:

  Help is always appreciated. There are differnet ways in helping.
  One is preparing the listed sites (ci.qa.php.net) for the git
  transition. Help with setting up the server is also much apprecaited.
  Just drop me a mail if you have some time to help.

Schedule:
  I hope to get the server and the migration ready for the end of this year
  and probably do the switchover in the last week of december or the first
  week of january, as I don't expect much commits during the holidays.
  This will probably line up with the 5.4.0 release.

Github:
  There was a lot of discussion if we can use github as our main
hosting platform.  I spoke to github people and they said it's not
possible to implement the PHP Karma system on github without rewriting
major parts of github. Two solutions were discussed. 

  (1) Only a bot can merge changes into the main repository. All committers
  will use pull requests. The bot checks for Karma. This approach will
  substantially extend the roundtrip time commit <-> karma check and will
  make every commiter wait a few seconds before he gets a status if he
  is able to commit. We also would need to deal with failing automatic merges
  and every developers needs to use the github GUI to create pull requests.

  (2) Split the PHP repository into submodules accoriding to karma. This will
  mean we will end up with dozents of submodules. This will split
  commits apart.  If you commit to ext/standard and Zend/ you will end
  up with different 3 commits.

For me the overall conclusion is, that we take one step at a time and self host with
github mirroring, but feel free to discuss alternatives.

We will however support a direct mirror to github that makes it possible to use
discuss pull requests on github.com, and then merge them locally (which you should
anyway as you want to run the test suite before you push).

This is just a short version of what we did so far.

Questions?

---

## #56937 — Hannes Magnusson — 2011-12-15T17:11:30+00:00

URL: https://externals.io/message/56934#56937 · In reply to: #56934

>  About SVN properties: We will not use 'keywords' anymore, unless
> a certain code needs it. I'm aware that code like reflection use
> the keyword information in their `phpinfo()` text. Should we enable
> keywords for this file or do we change the code?

Remove it, most other extensions have removed it from their info.


>  1. Compile a list of scripts/sites that need to be changed in order
>     to work with the git repo. Some sites are already on the list:
>     - http://ci.qa.php.net
>     - http://snaps.php.net
>     - http://edit.php.net
>     - http://lxr.php.net

rsync.. does something like cvsup or svnsync exist? :]

-Hannes

---

## #56939 — johannes@schlueters.de — 2011-12-15T17:47:12+00:00

URL: https://externals.io/message/56934#56939 · In reply to: #56937

> > […]
> 
> rsync.. does something like cvsup or svnsync exist? :]

Yes "git clone" (or git pull) ;-)

johannes

---

## #56940 — Alexey Shein — 2011-12-15T17:59:45+00:00

URL: https://externals.io/message/56934#56940 · In reply to: #56939

AFAIK, git natively supports rsync protocol, see man git pull.

2011/12/15 Johannes Schlüter <johannes@schlueters.de>:
> 
>
> > […]
>
> Yes "git clone" (or git pull) ;-)
>
> johannes
>
>
>
> --
> 
> 
>



-- 
Regards,
Shein Alexey

---

## #56941 — Ferenc Kovacs — 2011-12-15T21:57:00+00:00

URL: https://externals.io/message/56934#56941 · In reply to: #56934

> Hi Internals,
>
> three months ago we decided to move PHP to Git. I want to give you
> an update what happend so far and what we are working on.
>
> So far we have:
>
>  1. A working import from php-src.
>  2. A basic server setup.
>  3. A working Karma implementation.
>
> A little bit more details:
>
>  We will use y3.php.net as our git server. This server will run nginx
> as a webserver. We will provide a web frontend using gitweb.  You can
> pull using HTTP and Git protocols. Pushs will be done usign HTTPS only.
> You will use the same credentials that you used for SVN. A new Karma
> implementation was written and will be tested within the next weeks.
>
>  The minimum required Git version for cloning using the Git protocol
> will be 1.4.0. The minimum for pushing will be Git 1.6.5.3.
>
>  The migration will require some adjustements to the repository and
> a proper migration of SVN properties. We also need to rewrite author
> information on the repository. The Git Author information consists
> of a name and a email address. Therefore we will rewrite the autor
> information and use your stored Name and your username@php.net email
> address as the new author information. For example:
>
>  SVN commit author | Git commit author
>  ------------------------------------
>  dsp               | David Soria Parra <dsp@php.net>
>  gwynne            | Gwynne Raskind <gwynne@php.net>
>
> IMPORTANT: If you do not like us to use the name stored in the master
> DB for your account please let me know and we will change that.
>
>  About SVN properties: We will not use 'keywords' anymore, unless
> a certain code needs it. I'm aware that code like reflection use
> the keyword information in their `phpinfo()` text. Should we enable
> keywords for this file or do we change the code?
>  With the transition to Git one of the main attributes of keywords
> are gone. Git version nuimbers are not incremental so I don't see
> much point in using them anymore.
>
>  SVN ignores will be converted to a .gitignore file.
>
> TODO (What comes in mind atm):
>
>  1. Compile a list of scripts/sites that need to be changed in order
>     to work with the git repo. Some sites are already on the list:
>     - http://ci.qa.php.net
>     - http://snaps.php.net
>     - http://edit.php.net
>     - http://lxr.php.net
>  2. Finish the setup of the y3.php.net server. We need to figure
>     out how to make http digest auth work nginx. We also need to
>     setup email hooks, etc.
>  3. Test the current karma implementation. More details will follow.
>  4. Setup github mirroring
>
> Helping with the migration:
>
>  Help is always appreciated. There are differnet ways in helping.
>  One is preparing the listed sites (ci.qa.php.net) for the git
>  transition. Help with setting up the server is also much apprecaited.
>  Just drop me a mail if you have some time to help.
>
> Schedule:
>  I hope to get the server and the migration ready for the end of this year
>  and probably do the switchover in the last week of december or the first
>  week of january, as I don't expect much commits during the holidays.
>  This will probably line up with the 5.4.0 release.
>
> Github:
>  There was a lot of discussion if we can use github as our main
> hosting platform.  I spoke to github people and they said it's not
> possible to implement the PHP Karma system on github without rewriting
> major parts of github. Two solutions were discussed.
>
>  (1) Only a bot can merge changes into the main repository. All committers
>  will use pull requests. The bot checks for Karma. This approach will
>  substantially extend the roundtrip time commit <-> karma check and will
>  make every commiter wait a few seconds before he gets a status if he
>  is able to commit. We also would need to deal with failing automatic
> merges
>  and every developers needs to use the github GUI to create pull requests.
>
>  (2) Split the PHP repository into submodules accoriding to karma. This
> will
>  mean we will end up with dozents of submodules. This will split
>  commits apart.  If you commit to ext/standard and Zend/ you will end
>  up with different 3 commits.
>
> For me the overall conclusion is, that we take one step at a time and self
> host with
> github mirroring, but feel free to discuss alternatives.
>
> We will however support a direct mirror to github that makes it possible
> to use
> discuss pull requests on github.com, and then merge them locally (which
> you should
> anyway as you want to run the test suite before you push).
>
> This is just a short version of what we did so far.
>
> Questions?
>
> --
> 
> 
>
>
thanks for the heads up.
for the jenkins cluster (ci.qa.php.net) migration the following steps
are necessary:
- install the git plugin (already done because we pull symfony from
git(hub))
- install the git cli client on all slaves used for building php-src (it is
installed on the master node, installing on the linux/freebsd slaves would
be trivial, for windows I would go with msysgit)
- change the project configuration to use the git repo instead of the svn
I don't think that it would take much effort, nor do I expect surprises,
but I will set it up ASAP, so that we can sort it out before pulling the
plug.

websvn/viewvc: we would need to replace those and the links for those, and
there is also a bunch of wiki pages to update (how to contribute, fetching
the source, etc)

this is the things from the top of my head.
-- 
Ferenc Kovács
@Tyr43l - http://tyrael.hu
