Оформление репозитория git на чистом PHP - PullRequest
8 голосов
/ 17 августа 2011

Мне нужно сделать git checkout на чистом PHP. Я уже пробовал это (http://www.phpclasses.org/package/5310-PHP-Retrieve-project-files-from-GIT-repositories.html) с HTTP и SASL, но я действительно не работал. Затем я взглянул на GLIP (https://github.com/patrikf/glip), но, похоже, такой функциональности нет. В основном мне нужно

-реплировать / клонировать удаленное хранилище git

- "извлечь" файлы главной ветки в указанную директорию

Основная проблема с PHP GIT заключается в том, что он просто не поддерживает все возможные изменения, которые вы можете сделать в коммите. Только новые файлы, без перемещения файлов. И также не удалось извлечь файлы.

/ редактирование: git не установлен, и я также не могу установить git

Ответы [ 3 ]

4 голосов
/ 17 августа 2011

Вы можете попробовать с

Git Streamwrapper для PHP - это библиотека PHP, которая позволяет коду PHP взаимодействовать с одним или несколькими Gitхранилища из приложения.Библиотека состоит из абстракции Git-репозитория, которую можно использовать для программного доступа к репозиториям Git, и потоковой обертки, которую можно подключить к потоковой инфраструктуре PHP, чтобы позволить разработчику использовать функции доступа к файлам и каталогам непосредственно для файлов в репозитории Git.Библиотека предоставляет средства для доступа к информации о состоянии в репозитории Git, такой как журнал, текущее состояние репозитория или информация о фиксации.

Требуется, чтобы Git был установлен на машине и являетсяв бета-версии на момент написания статьи.

3 голосов
/ 15 января 2013

Я разработал довольно хорошую библиотеку PHP для работы с git-репозиториями, вы должны учитывать это: http://gitonomy.com/doc/gitlib/master/

выглядит так:

$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 голосов
/ 03 июля 2015
<?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;
    }
  }
?>
...