在 Git 提交需要不同于用于测试和开发的 PHP 代码的测试环境中,有什么方法可以处理项目?

What ways are there to work on a project in a testing environment where the Git commit needs to be different to the PHP code used for testing and dev?

在我的项目中,可部署版本需要有每个外部库的副本、不同的配置文件以及安装和设置文件,出于安全考虑,主项目设置为拒绝 运行如果他们在场。因此,其他项目的上游副本需要提交回购。我如何在本地主机上处理代码 运行ning,其中文件布局和有时来自开发和测试的文件内容与我需要提交的内容不同?

背景

我正在 github 上托管的项目上工作,我的主要 IDE 是 netbeans,它的 git 支持不完善(足以满足我 >99% 的需求) .该项目在 PHP 中,并使用其他几个项目作为库。

由于 Netbeans 没有对子存储库的最佳支持,我选择将每个附加项目保留在一个单独的项目中。这很好,因为中央项目会查看配置数据以查找这些外部库的位置。

回答一半

我的直觉是假设在提交 github 回购之前需要一些 "build stage" 但我究竟该如何设置所有这些?

我可以写一些自制的东西,但是当我拉取其他人的贡献时,我需要逆转这个过程,除非我们有一个用于构建的分支和一个用于工作副本的分支,这看起来不必要地复杂并且可能离开开发人员(s) public 显示配置数据(更不用说更新一团糟了)。

我看到其他人已经解决了一些类似的问题但没有结论(在询问时)(How to push and pull from github without sharing sensitive information? Smudge & clean?)所以我正在寻找任何可以帮助我想出解决方案的东西

my main IDE is netbeans which has imperfect git support

大多数开发者只使用命令行。我偶尔切换到 NetBeans 冲突解决程序,这非常好,但对于普通的东西,控制台通常更快。

My instinct is to suppose that there will need to be some "build stage" prior to committing to the github repo

... unless we had a branch for builds and a branch for working copies

不,只有一个存储库。最好将您的存储库视为您的代码历史,而不是您的部署状态。分支应该只用于功能或大的更改,它们合并到您的 mainline/master.

部署时有很多选项可供您使用。第一个是 Composer,Mark 指出:部署时你发出 installupdate 命令,它递归地获取满足你的库要求的依赖项。您可以使用 Bower 为您的 JavaScript 依赖项做同样的事情。

一些部署策略更喜欢在本地构建,然后 scp/rsync 到远程服务器。 Composer 和 Bower 可能仍然是个好主意,但是您编写一个构建脚本(例如使用 Ant or Phing)在本地临时文件夹中创建一个构建副本,然后将其发送到服务器。这里也很常见,将其推送到服务器上的新发布文件夹,然后在准备好上线时交换符号链接或 Apache 配置文件。

the deployable version needs to have a copy of each of the external libs, a different config file and install and setup files, for security concerns

假设这是一个网络项目,您是否尝试过将您的敏感环境数据添加到您的 Apache 配置文件中?这可以在 PHP 中轻松阅读,当然 PHP 并不关心根据您是在开发、测试、演示分支还是实时操作,这些信息有所不同。


进一步阅读:an excellent PHP deployment book,免费,建议使用 Phing 和 Capistrano。