在测试环境中,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?

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

背景

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

由于Netbeans对次级回购没有最好的支持,我选择将每个额外的项目保留在一个单独的项目中。这很好,因为中心项目会查看配置数据,以确定在哪里可以找到这些外部库。

半个答案

我的直觉是,在承诺github回购之前,需要有一些"构建阶段",但我到底该如何设置这些呢?

我可以写一些自制的东西,但当我提取其他人的贡献时,我需要颠倒这个过程,除非我们有一个用于构建的分支和一个用于工作副本的分支,这似乎不必要地复杂,并且可能会将开发配置数据公开显示(更不用说更新一团糟)。

我看到其他人也遇到了一些类似的问题,直到没有结论(在提问时)(如何在不共享敏感信息的情况下从github推送和提取?Smudge&clean?)所以我正在寻找任何可能帮助我想出解决方案的方法

我的主要IDE是netbeans,它不完全支持git

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

我的直觉是假设在承诺github回购之前需要一些"构建阶段"

除非我们有一个构建分支和一个工作副本分支

不,只有一个存储库。最好将回购视为代码历史,而不是部署状态。分支应该只用于功能或大的更改,这些更改会合并到主线/主节点中。

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

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

出于安全考虑,可部署版本需要有每个外部lib的副本、不同的配置文件以及安装和设置文件

假设这是一个web项目,您是否尝试将敏感环境数据添加到Apache配置文件中?这在PHP中可以很容易地阅读,当然,PHP并不在乎这些信息根据您是在开发、测试、演示分支还是在运行而有所不同。


进一步阅读:一本优秀的PHP部署书,免费提供Phing和Capistrano的建议。