Как я могу получить информацию о git на машине cloudControl?
Я ищу способ автоматически получать эту информацию в контейнере cloudControl. Поэтому я написал небольшой сервис Symfony2, который возвращает некоторую информацию о git, например, хэш коммита
public function getCommitHash() {
exec('git rev-parse --short HEAD', $output);
$hash = implode(', ', $output);
return $hash;
}
Если я запускаю это на моей локальной машине, он возвращает правильный сокращенный хеш коммита. Но если я отправлю это на мой компьютер с CloudControl, возврат будет null
, Я вручную подключился к машине и запустил эту команду в командной строке (в www
папка, в которую помещается репозиторий). Это приводит к следующей ошибке:
fatal: Not a git repository (or any parent up to mount parent )
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Я действительно запутался, так как думал, что просто запихиваю весь свой репозиторий (включая .git
папку) на удаленный компьютер. Почему я получаю эту ошибку и как вместо этого я могу получить информацию о git?
2 ответа
Если вы хотите использовать версию git в своем работающем контейнере, вы можете использовать переменную окружения DEP_VERSION
, Например:
<?php
echo 'This container is running git commit ' .$_ENV["DEP_VERSION"] . '.';
?>
Вы не можете получить информацию о git из контейнера, так как репозиторий git не инициализируется там, где находится код.
Весь код находится в узле репозитория. Вы можете получить удаленный адрес, выполнив cctrlapp APP_NAME/DEP_NAME details
, он будет иметь следующий формат: ssh://APP_NAME@cloudcontrolled.com/repository.git
,
Учитывая этот адрес git, вы можете добавить его в качестве удаленного в локальный каталог (git remote add cctrl ssh://APP_NAME@cloudcontrolled.com/repository.git
) и получите всю информацию о git, как хотите.