我正在寻找一种在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信息?
答案 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"] . '.';
?>