0

cloudControl コンテナーでこれらの情報を自動的にフェッチする方法を探しています。そこで、いくつかの git 情報 (コミット ハッシュなど) を返す小さな Symfony2 サービスを作成しました。

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 情報を取得するにはどうすればよいですか?

4

2 に答える 2

1

コードが配置されている場所で 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 情報を取得できます。

于 2014-06-11T12:55:11.050 に答える
1

実行中のコンテナー内で git バージョンを使用する場合は、環境変数を使用できますDEP_VERSION。例えば:

<?php
echo 'This container is running git commit ' .$_ENV["DEP_VERSION"] . '.';
?>
于 2014-06-11T17:23:49.453 に答える