Как я могу получить информацию о 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, как хотите.

Другие вопросы по тегам