rafaelgou/gitolite-php

使用PHP管理Gitolite的类

dev-master 2017-01-17 16:43 UTC

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');