2011-08-17 9 views
8

Necesito un pago de git en PHP puro. Ya probé esto (http://www.phpclasses.org/package/5310-PHP-Retrieve-project-files-from-GIT-repositories.html) con HTTP y SASL, pero realmente no funcionó. Luego eché un vistazo a GLIP (https://github.com/patrikf/glip), pero eso no parece tener ninguna funcionalidad como esta. Necesito básicamentePago del repositorio de git en PHP puro

-replicate/clonar un repositorio Git remoto

- "extraer" archivos rama principal en un directorio especificado

El principal problema con PHP GIT es, que simplemente no lo hizo admitió todos los cambios posibles que podría hacer en una confirmación. Solo archivos nuevos, sin moverse de los archivos. Y tampoco fue capaz de extraer archivos.

/editar: git no está instalado y que tampoco puede instalar git

+0

Aquí es una pregunta casi idénticos. [performing-a-git-pull-in-pure-php] (http://stackoverflow.com/questions/6994773/performing-a-git-pull-in-pure-php) – Andy

Respuesta

4

Usted puede tratar con

Git streamWrapper para PHP es una librería PHP que permite que el código PHP interactúe con uno o múltiples repositorios Git desde dentro de una aplicación. La biblioteca consiste en una abstracción de repositorio Git que se puede usar para acceder programáticamente a repositorios Git y de un contenedor de flujo que puede engancharse a la infraestructura de flujo PHP para permitir al desarrollador usar funciones de acceso a archivos y directorios directamente en archivos en un repositorio Git. La biblioteca proporciona medios para acceder a la información de estado en un repositorio de Git, como el registro, el estado actual del repositorio o la información de confirmación.

Requiere que Git se instale en la máquina y está en estado beta en el momento de escribir este documento.

+2

Disculpa que me olvidé de mencionarlo pero - git no está instalado y no puedo instalarlo (espacio web compartido) :( – dom0

+0

Tengo exactamente la misma dificultad y alguien me sugirió usar FTPloy, no lo suficientemente bueno para mí, pero tal vez vale la pena echarle un vistazo – Tony

3

he desarrollado una muy buena librería PHP para manipular los repositorios Git, se debe considerar que: http://gitonomy.com/doc/gitlib/master/

se ve así:

$repository = new Gitonomy\Git\Repository('/path/to/repository'); 
$master  = $repository->getReferences()->getBranch('master'); 

$author = $master->getCommit()->getAuthorName(); 

echo "Last modification on master made by ".$author; 
+0

No lo hace esto también requiere que 'git' esté instalado en el sistema? – Potherca

+0

@ Alexandre Salume Una vez probé tu biblioteca y no pude hacer que funcione. La idea era centralizar la manipulación local de mi repositorio. Digamos que tengo una aplicación php dentro del sistema. wamp www carpeta con git inicializado en él. ¿Es posible utilizar su biblioteca para manipular ese repositorio en lugar de utilizar BitBucket o Github como rutas de origen? – Maximum86

-3
<?php 
    /** 
    * This function handles the pull/init/clone of a git repo 
    * 
    * @param $git_url 
    * Example of git clone url git://github.com/someuser/somerepo.git 
    * 
    * @return bool true 
    */ 
    public static function pullOrCloneRepo($git_url) { 
    if (!isset($git_url)) { 
     return false; 
    } 
    // validate contains git://github.com/ 
    if (strpos($git_url, 'git://github.com/') !== FALSE) { 
     // create a directory and change permissions 
     $uri = 'public://somedir'; // change this if not in drupal 
     //check the dir 
     $file_path = drupal_realpath($uri); // change this if not in drupal 
     if (isset($file_path)) { 
     $first_dir = getcwd(); 
     // change dir to the new path 
     $new_dir = chdir($file_path); 
     // Git init 
     $git_init = shell_exec('git init'); 
     // Git clone 
     $git_clone = shell_exec('git clone '. $git_url); 
     // Git pull 
     $git_pull = shell_exec('git pull'); 
     // change dir back 
     $change_dir_back = chdir($first_dir); 
     return true; 
     } 
    } 
    else { 
     return false; 
    } 
    } 
?> 
+0

si tiene instalado git y luego se vuelve loco – taggartJ

Cuestiones relacionadas