0

我正在寻找一种在 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 信息?

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 回答