rafaelgou / gitolite-php
使用PHP管理Gitolite的类
dev-master
2017-01-17 16:43 UTC
Requires
- php: >=5.3.0
- ornicar/php-git-repo: dev-master
This package is not auto-updated.
Last update: 2024-09-14 14:50:24 UTC
README
通过PHP管理gitolite git服务器的包装器。
主要用途是从头创建gitolite-admin仓库,并创建GUI来管理它。
仍然是Alpha版本!许可证尚未定义!
特性
- 提供一些对象并渲染gitolite.conf文件
- 从远程gitolite-admin仓库拉取和推送(基本完成)
限制
- 尚未实现gitolite的所有功能
- 一些功能将有意被省略以实现更好的集成
- 可能无法从现有仓库中完全读取
- 可能永远无法导入包含的文件
待办事项
- 从gitolite.conf中读取
安装
git clone git://github.com/rafaelgou/gitolite-php.git
cd gitolite-php
git submodules update
您可以将它作为子模块安装到您的Git项目中,但不要忘记在gitolite-php目录中运行git submodule update。
使用
// Register Autoload
include_once('PATH_TO/gitolite-php/src/GitoliteAutoload.php');
\GitoliteAutoload::registerAutoload();
// PHPGit_Repository
require_once('PATH_TO/gitolite-php//vendor/php-git-repo/lib/PHPGit/Repository.php');
示例用法
<?php
// Register Autoload
include_once('src/GitoliteAutoload.php');
\GitoliteAutoload::registerAutoload();
// PHPGit_Repository
require_once(dirname(__FILE__) . '/vendor/php-git-repo/lib/PHPGit/Repository.php');
use Gitolite\Gitolite;
use Gitolite\User;
use Gitolite\Team;
use Gitolite\Acl;
use Gitolite\Repo;
$gitolite = new \Gitolite\Gitolite;
$gitolite
->setGitUsername('An User Name')
->setGitEmail('bla@blamail.com')
->setGitLocalRepositoryPath('/var/www/MeusProjetos/Gitolite/tmp/gitolite-admin')
// ->setGitRemoteRepositoryURL('/var/www/MeusProjetos/gitolite-tmp');
->setGitRemoteRepositoryURL('git@bladomain.com:gitolite-demo')
->setGitServerName('My server name');
$user1 = new User();
$user1->setEmail('bla@blamail.com')
->setUsername('thebla')
->addKey('ssh-rsa AAAAB3NzaC1yc2EAAAADDDDDAABAQDV+ZM7O6hYUNmO+EieB4l2puC1cfICIOY8TQcz4r/XpIudefQYSlxLdYV1ZYIYUL/kmbX3QU0jI8s/sAXCMeBH56y0Kl2qhLCw1HZwsdd5nYyeb4aIdxqlnXds+3pQ+BOR1RV0bFA5TIwXiCA46efmb4H51GnqjYiMsvUMR/fs86F9lA/rAhTtBjcN+ALh+qKYKT1hOO6RzbEzM8wyOcxZf0XRz02usC+GGvVMGlVwzNk+csnDERmt5282LMfJ8ba3AUDEJuNGhq3XwAhgboamEcq7/2JAsKcWGgdtI/FwWSAOtRZfgxBWMuZCwyzZPdQgbImPf73wtnTid8dXCxXR bla@blamail.com');
$user2 = new User();
$user1->setEmail('ops@opsmail.com')
->setUsername('opsbla')
->addKey('ssh-rsa AAAAB3NzaC1yc2EAAAADDDDDAABAQDV+ZM7O6hYUNmO+EieB4l2puC1cfICIOY8TQcz4r/XpIudefQYSlxLdYV1ZYIYUL/kmbX3QU0jI8s/sAXCMeBH56y0Kl2qhLCw1HZwsdd5nYyeb4aIdxqlnXds+3pQ+BOR1RV0bFA5TIwXiCA46efmb4H51GnqjYiMsvUMR/fs86F9lA/rAhTtBjcN+ALh+qKYKT1hOO6RzbEzM8wyOcxZf0XRz02usC+GGvVMGlVwzNk+csnDERmt5282LMfJ8ba3AUDEJuNGhq3XwAhgboamEcq7/2JAsKcWGgdtI/FwWSAOtRZfgxBWMuZCwyzZPdQgbImPf73wtnTid8dXksk ops@opsmail.com');
$team = new Team();
$team->setName('MyTeam')
->addUser($user1)
->addUser($user2);
$acl = new Acl();
$acl->setPermission('RW+')
->setRefexes('')
->addUser($user1)
->addTeam($team);
$repo1 = new Repo();
$repo1->setName('gitolite-php')
->addAcl($acl);
$gitolite
->addUser($user1)
->addUser($user2)
->addTeam($team)
->addRepo($repo1)
;
$gitolite->writeAndPush();
echo $gitolite->renderFullConfFile();
您还可以使用导入方法只编辑一些数据或删除仓库
<?php
$gitolite->import();
$gitolite->delRepo('name');