2011-08-17 15 views
8

Potrzebuję do kasy git w czystym PHP. Próbowałem już tego (http://www.phpclasses.org/package/5310-PHP-Retrieve-project-files-from-GIT-repositories.html) z HTTP i SASL, ale tak naprawdę nie działałem. Potem rzuciłem okiem na GLIP (https://github.com/patrikf/glip), ale to nie wydaje się mieć żadnej takiej funkcji. Zasadniczo muszęZamówienie repozytorium git w czystym PHP

-replicate/sklonować zdalnego repozytorium git

- „wyodrębnić” Mistrzu plików oddziałów w określonym katalogu

Głównym problemem z PHP GIT jest, że to po prostu nie obsługiwane wszystkie możliwe zmiany, które można wykonać w zatwierdzeniu. Tylko nowe pliki, bez przenoszenia plików. Nie można również wyodrębnić plików.

/edit: git nie jest zainstalowany, a ja też nie można zainstalować git

+0

Tutaj jest prawie identyczne pytanie. [wykonujący-a-git-pull-in-pure-php] (http://stackoverflow.com/questions/6994773/performing-a-git-pull-in-pure-php) – Andy

Odpowiedz

4

Można spróbować z

Git Streamwrapper dla PHP jest biblioteką PHP, który pozwala kodowi PHP na interakcję z jednym lub wieloma repozytoriami Git z poziomu aplikacji. Biblioteka składa się z abstrakcji repozytorium Git, która może być używana do programowania dostępu do repozytoriów Git oraz do pakowania strumieniowego, które można podłączyć do infrastruktury strumienia PHP, aby umożliwić programistom korzystanie z funkcji dostępu do plików i katalogów bezpośrednio w plikach w repozytorium Git. Biblioteka zapewnia także dostęp do informacji o stanie w repozytorium Git, takich jak dziennik, bieżący stan repozytorium lub informacje o zatwierdzeniu.

Wymaga zainstalowania Git na maszynie i jest w wersji beta od tego momentu.

+2

Przepraszam, że zapomniałem o tym wspomnieć ale - git nie jest zainstalowany i nie mogę go zainstalować (shared webspace) :( – dom0

+0

Mam dokładnie taką samą trudność i ktoś zasugerował mi, żebym użył FTPloy, nie wystarczająco dobry dla mnie, ale może warto spojrzeć na to – Tony

3

ja stworzyliśmy całkiem dobre biblioteki PHP do manipulowania repozytoriów git, należy ją rozważyć: http://gitonomy.com/doc/gitlib/master/

wygląda następująco:

$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

Nie to również wymaga zainstalowania 'git' w systemie? – Potherca

+0

@ Alexandre Salume Kiedyś wypróbowałem twoją bibliotekę i nie mogłem jej uruchomić.Miałem scentralizowaną operację na moim repozytorium lokalnie. Powiedzmy, że mam aplikację php w folder wampirzyc z zainicjowanym na nim git. Czy można użyć biblioteki do manipulowania tym repozytorium, zamiast używać BitBucket lub Github jako ścieżek źródłowych? – 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

jeśli masz zainstalowane git to idź orzechy – taggartJ