跨服务器的Git设置

时间:2013-10-03 18:24:08

标签: php git github gitignore

这可能是一个相当基本的问题,但我并不是100%熟悉最好的Git实践。我正在开发一个定期推送更新的Web应用程序。我的本地机器上有文件,这是我编辑/开发的大部分内容。我有一个删除测试服务器,我在开发期间将文件推送到。

然后我有一个实时远程生产服务器,其中包含实时应用程序。所有文件都是相同的(期望测试服务器上的新功能),但有一个例外。我有一个config.php文件,它有各种设置,如数据库连接设置,路径,API密钥等。

我在两台远程服务器上都添加了一个.gitignore文件,告诉Git忽略config.php文件。如果我添加任何内容,我可以稍后手动覆盖它。

我根据需要将文件上传到测试服务器,一旦一切顺利,我将文件从github(存储所有内容)拉到实时服务器以启动文件。

这听起来对吗?我错过了什么或做错了什么。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

对于config.php文件问题,请查看此方法,而不是将其从VCS中排除。

if ($_SERVER['SERVER_ADDR'] === 'test-machine-ip') {
    // config here
    $config = array(); 
} else {
    // production or other config, you get the idea 
    $config = array(); 
}

关于测试/实时服务器的更新;如果你有一个独立的服务器,你提到的方法应该没问题,否则你应该实现git hooks,根据你推送到的特定分支进行自动更新,如testingproduction

钩子将允许您进行类似于此的过程:

  1. 推送到远程原点(BitBucket等)
  2. BitBucket有一个钩子设置,POST提交服务器的数据(分支名称等)
  3. 您的脚本将根据提交数据读取提交并执行相应操作。
  4. 此方法仅适用于生产服务器,同时仍然使用测试服务器的其他方法,通常只有一个盒子。您在网上找到的大多数小脚本都没有分支检测功能。

    以下是一些可以帮助您入门的资源

    请注意,自动部署的方法各不相同。

    如果您有一些生产服务器等,这种方法很有用,并且还可以消除SSH进入服务器以执行拉动的麻烦(尽管您可以为此编写脚本)。