正确的方式使用Git / GitHub – PHP系统与开发/testing/生产服务器
我很抱歉,如果这是明显的或容易的,我已经看了很多的git / github教程和阅读其他文章,但我想确保我在做什么是正确的。
我想将VC(出于显而易见的原因)融入到我的开发团队和stream程中。
目前的开发过程(使用Dreamweaver):
*收到一张票(或工单)
*在开发服务器上下载文件
*更改文件
*上传文件到开发服务器
*更改testing/validation
*发送到生产服务器
我试图弄清楚如何使用Git来开发新的开发stream程。
我正在切换到PHPStorm(这是一个与Git直接集成的实际PHP IDE)。
会是这样的吗?
- 收到一张票(或工作单)
- 结帐/更新/下载文件
- 更改文件
- 上传文件(我认为也是当前的工作目录…?)
- 在一天结束时,做一个提交
- 有构build脚本发送数据到testing服务器(每晚构build)
或者做更好的做法
- 收到一张票(或工作单)
- 结帐/更新/下载文件
- 更改文件
- 上传文件/提交
- 有构build脚本发送数据到testing服务器(每晚构build)
还是有另一种方式? 理解什么是最佳stream程有点麻烦?
任何帮助将不胜感激。
编辑
我想看看是否最好在本地(每个开发人员)有一个服务器版本,如果是的话,如果你有7个左右的分支,这是如何工作?
如果不是的话,你如何在网上处理7个左右的分支? 你FTP文件或使用Git钩子,使他们自动更新?
2012年7月26日更新
在使用Git成功一段时间之后,我一直在关注这个分支模型,并取得了巨大的成功: 一个成功的Git分支模型
上面的答案是肯定的 – 应该肯定有本地版本的服务器。
假设你有一个活的服务器和一个开发服务器,我会沿着这些线做一些事情。
在开始一个开发周期之前,我至less会有两个分支:
- Master – 开发服务器在这个分支上运行
- 稳定 – 活动的服务器在这个分支上运行。
因此,如果开发者获得一张票或一份工作单,他/她将执行以下操作:
- git拉来源高手
- git分支featureBranch(被命名为ticket ID或作为工单的一个很好的描述)
- git结账function分支
- 做出改变,完成预期的改变。 尽可能经常提交。 这样做是因为你将创造有价值的历史。 例如,你可以尝试一个方法来解决问题,如果不行,就放弃它。 如果一天之后你看到光线,想要重新应用解决scheme,这是在你的历史!
- 当function完全开发和本地testing时,结帐主。
- 混帐function分支
- git推送起源大师
- 在开发服务器上testing推送的更改。 这是运行你能想到的每一个testing的时刻。
- 如果一切正在解决,合并function或修复稳定的分支。 现在这个变化是为你的客户而生的。
在服务器上获取代码
服务器的更新不应该是一个问题。 基本上我会像开发人员一样将其设置为用户。 在我的公司,我们已经将服务器设置为只读用户。 基本上这意味着服务器不能推动任何东西,但总是可以拉动。 设置这个不是微不足道的,所以你可以build立一个简单的web界面,只允许一个git拉。 如果你可以让你的开发人员在现场执行的东西,你是安全的:)
[编辑]
针对这个反应的评论中提出的最后一个问题:
我不知道我是否正确地理解了你的问题,但是基本上(简化了一下),我就是这么做的,是我在你的鞋子里。
testing机器(或作为testing实现的webroot)具有基于git仓库的源代码,其中主分支签出。 在创build这个仓库的时候,你甚至可以删除所有其他分支的所有引用,所以你可以确定没有可以在这个仓库中检出一个错误的分支。 所以基本上testing机器有一个只有一个主分支被检出的Git仓库。
对于现场服务器,我会做同样的事情,但这次检查稳定的分支。 开发人员应该有一个本地存储库克隆所有分支存在。 还有你们build立的软件的本地实现。 这个软件从本地的git仓库获取它的源代码。 换句话说:从此存储库中当前检出的分支中。
实际编码
当需要新function时,可以根据当前主设备制作本地function分支。 当分支检出时,开发人员可以在本地进行更改(因为软件现在正在特性分支的源上运行)。
如果一切似乎都是按顺序进行的,那么这些更改将从function分支合并到主控并推送到您的“git机器”。 “你的github”可以这么说。 testing现在可以把这些变化吸引到每一个必要的testing中去。 如果他们决定一切正常,开发人员可以将主从更改合并到稳定并再次推送。
现在剩下的就是拉动你的活动机器。