Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ekino/php-mirroring
[deprecated] Packagist and Github mirroring
https://github.com/ekino/php-mirroring
Last synced: 3 months ago
JSON representation
[deprecated] Packagist and Github mirroring
- Host: GitHub
- URL: https://github.com/ekino/php-mirroring
- Owner: ekino
- License: mit
- Archived: true
- Created: 2013-02-20T12:14:59.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2016-05-28T13:10:05.000Z (over 8 years ago)
- Last Synced: 2024-08-02T05:21:46.174Z (6 months ago)
- Language: PHP
- Homepage:
- Size: 22.5 KB
- Stars: 55
- Watchers: 23
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.txt
- License: LICENSE
Awesome Lists containing this project
- php-awesome - php-mirroring - Packagist and Github mirroring (类库 / 未归类)
README
⚠️ Deprecated Project ⚠️
=====================Please note, the current implementation is not suitable anymore and does not work anymore with composer if you are using an ``ext3`` partition. Also, the mirroring solution requires a dedicated git host to server repository which is not an easy and simple task on the long run.
You should now use: [https://github.com/rande/pkgmirror](https://github.com/rande/pkgmirror)
Packagist and Github mirroring
==============================Experiencing Github issues ? You want a local cache to speed up tests and deployment ?
Mirroring Packagist
-------------------1. Set up a new host on your webserver : packagist.mycompany.com
2. Go to the document root for the new host
3. run `git clone git://github.com/ekino/php-mirroring.git .`
4. run `cp config.php.sample config.php`
5. edit rules: `vim config.php`
6. run `php mirror.php` - this can take a while for the first one
7. add a new cron job `sudo crontab -u www-data -e`:
0 */1 * * * cd /PATH_TO_DOCUMENT_ROOT && php mirror.php
Mirroring Github
----------------1. Create a new mirror directory
mkdir mirrors/github.com
2. Add new mirror
cd mirrors/github.com
git clone --mirror git://github.com/ekino/php-mirroring.git ekino/php-mirroring.gitOf course you need to repeat this operation for each mirror.
3. Setup a cron to update the mirror:
0 */1 * * * /git/repositories/mirrors/update-mirrors.sh
4. Add the file : `vim /git/repositories/mirrors/update-mirrors.sh`
#!/bin/sh
cd /git/repositories/mirrors/github.comfor i in */*.git; do
cd $iurl=`echo $i | sed "s/.git//"`
echo " > check 404 on https://github.com/${url}"
curl -ILs https://github.com/${url} | head -n 1 | grep "HTTP/1.1 200 OK" > /dev/nullif [ $? -eq 0 ] ; then
echo " > fetching git changes"
git fetch
fi#echo "end ..."
cd ../..
doneUsages
------### Using source mode with gitolite
1. Setup a Gitolite
2. Add a new entry
repo mirrors/..*
R = @team3. set the source mode to true
function include_source()
{
return true;
}### Using dist mode with a http server
1. setup a new php instance with a dedicated vhost
2. make sure the ``replace_dist_host`` function point to the correct vhost
function replace_dist_host(array $metadata)
{
list($vendor, $name) = explode("/", $metadata['name']);if (!preg_match('@(https://api.github.com/repos/|https://github.com/|https://bitbucket.org)([a-zA-Z0-9_\-\.]*)/([a-zA-Z0-9_\-\.]*)/(zipball|archive|get)/([a-zA-Z0-9\.\-]*)(|.zip)@', $metadata['dist']['url'], $matches)) {
return '';
}$host = sprintf('http://packagist.mycompany.com/cache.php/github.com/%s/%s/%s.zip',
$matches[2],
$matches[3],
$metadata['dist']['reference']
);return $host;
}function include_dist()
{
return true;
}function include_source()
{
return true; // set to false if you only want to expose distribution
}### Composer.json
1. Make sure you have a clean project
rm -rf composer.lock vendor
2. update the ``composer.json`` file to disable packagist and add the new one
{
"repositories":[
{ "packagist": false },
{ "type": "composer", "url": "http://packagist.mycompany.com"}
],
// ...
}If you are using non-composer packages, use the correct source url when adding them.
{
"repositories":[
{
"type": "package",
"package": {
"name": "documentcloud/underscore",
"version": "dev-master",
"source": {
"url": "[email protected]:/mirrors/github.com/documentcloud/underscore.git",
"type": "git",
"reference": "master"
}
}
}
// ...
],
// ...
}3. Install the dependencies
php composer.phar install