在Openshift服务器上运行git添加和提交

在Openshift服务器上运行git添加和提交,git,openshift,Git,Openshift,我正在使用一个创建configuration.php文件的平台,作为灌输过程的一部分。现在,安装过程作为构建钩子的一部分在服务器上运行。问题在于,因为它是在服务器上创建的,所以在每次推送之后,它必须重新运行灌输过程。这覆盖了很多更改 有没有办法在服务器上运行git add和git commit?如果我可以将configuration.php文件添加到repo中,并将它拉下来,那么灌输过程将不会继续运行。如果是,我应该在哪个目录下运行这些命令 我已经尝试在服务器上运行SSHing并运行git命令,

我正在使用一个创建configuration.php文件的平台,作为灌输过程的一部分。现在,安装过程作为构建钩子的一部分在服务器上运行。问题在于,因为它是在服务器上创建的,所以在每次推送之后,它必须重新运行灌输过程。这覆盖了很多更改

有没有办法在服务器上运行
git add
git commit
?如果我可以将configuration.php文件添加到repo中,并将它拉下来,那么灌输过程将不会继续运行。如果是,我应该在哪个目录下运行这些命令


我已经尝试在服务器上运行SSHing并运行git命令,但只收到错误
致命:不是git存储库(或任何到装入点/var/lib/openshift的父存储库)
无论我尝试的是哪个目录。

如果我理解正确,您的问题是一旦将提交推送到openshift repo,OpenShift服务器自动启动新的安装,而您丢失了所有配置和数据

这是OpenShift实施正确部署过程的方法。你不应该试图绕过它;相反,您应该使您的安装适应它。如果您的部署过程可以与OpenShift一起很好地工作,那么您可以轻松地部署多个环境并使它们保持最新,这可以在您投入生产后起到救生作用

我也面临着这个问题,这就是我所做的:

关键是
app root/data
文件夹。推送时不会删除此文件夹,因此可以使用它存储部署时不应更改的数据文件。我还用它来存储我的配置文件。我将配置文件放在
.gitignore
中,这样它们就不会签出到OpenShift repo中。然后,在开始构建之前,我使用了
build
钩子(尽管也许我应该使用
pre_build
..)将这些文件从
数据文件夹复制到它们的真实位置

您需要记住的是,构建所需的每个文件都应该由git进行版本控制、从
数据中复制、从internet下载(由依赖关系管理器或
wget
\
curl
)或在构建过程中创建。您不能让文件停留在那里(就像您在开发机器上的本地工作副本中一样),因此,如果您有一个没有版本控制且在构建过程中没有创建的文件,请确保您设置了一个钩子来下载它或从
数据
复制它


如果你需要推荐人,你可以看看我的项目。相关部分是和。

在OpenShift服务器上安装PHP论坛时,我遇到了类似的问题。要解决推送到远程git时丢失配置文件的问题,请执行以下操作:

  • 安装平台,让它创建PHP配置文件,并对远程git进行更改
  • 用于将远程回购下载到本地git。例如,使用类似于以下命令的命令:
    pscp-r-i“x:\your\private\key\location\id\u rsa.ppk”your.openshift.host:app root/runtime/repo/*“x:\your\local\git\location”
  • 将更改(和配置文件)提交到本地git
  • 将提交推送到远程git

  • 现在,当您推送远程git时,您也将推送配置文件。请注意,如果您的平台对您的远程git进行了其他更改,则您必须重复上述操作,以便在推送时不会丢失这些更改。

    我多次阅读了您的问题,但我仍然不明白这里的问题是什么以及您正在尝试做什么。一般来说,是的,您可以在服务器上执行
    git add
    git commit
    ,我发现您似乎不知道您的git repo目录在服务器上的位置,但这是我从您的解释中理解的全部。Openshift是一种云paas,它与大多数主机不同。我知道我应该能够很容易地访问git回购协议,但还没有任何运气。我希望有人知道原因和方式。谢谢你的回复。我知道一切都需要成为回购协议的一部分,我只是想找出管理此文件的最佳方法。我尝试使用数据目录,但文件总是777。我尝试过对文件进行chmoding,但它们总是会恢复。这对包含敏感信息的配置文件不好。也许我在这方面遗漏了什么;我会进一步研究的。你为什么会关心这些权限?OpenShift不是一个终端服务器——它没有乱搞东西的终端用户。每个OpenShift帐户都有一个用户,只有该用户可以SSH连接到项目中。即使您有多个SSL密钥,它们也将在OpenShift计算机上共享同一个用户。该用户(=您)仅以管理员身份通过SSH登录,目标明确,因此我不会担心意外修改这些文件。其他用户甚至无法访问该目录树。这就留下了运行OpenShift的RedHat人员,他们不会把你的东西弄乱。