如何在cloudControl机器上获取git信息?

时间:2014-06-11 12:28:13

标签: 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 个答案:

答案 0 :(得分: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信息。

答案 1 :(得分:1)

如果要在正在运行的容器中使用git版本,可以使用环境变量DEP_VERSION。 E.g:

<?php
echo 'This container is running git commit ' .$_ENV["DEP_VERSION"] . '.';
?>