使用1个远程开发服务器并且没有本地开发环境的Web开发团队中的git

时间:2013-10-23 15:51:10

标签: php git web github

我在一个拥有一个小团队的网络代理商(5名开发人员,2名设计师)工作。我们主要使用PHP / MySQL Web应用程序,包括Magento,Experession Engine和CakePHP。我们在OSX(设计师)上使用Windows 7 PC'S(开发人员)和Mac的组合。

我一直在研究将github用于我们的项目有三个主要目标:

  1. 查看谁编辑了文件并允许其他人对文件发表评论。

  2. 为了避免覆盖彼此的工作,因为有时多个人可以尝试同时处理同一个文件。

  3. 允许回滚到以前版本的文件。

  4. 这是我们当前的工作流程,我不明白github如何适应这一点。我意识到我们的工作流程需要改变,但我无法找到一个似乎与之相符的过程:

    1. 我们所有的工作都是在一个专门用于开发的远程Web服务器上完成的(此处没有“实时”)。服务器正在运行Apache,PHP,MySQL等。没有人在他们的机器上设置本地开发环境,如果可能的话我们不希望这样。

    2. 我们都有FTP访问上面提到的开发服务器。我们通常直接在这个开发服务器上编辑文件,因为它提供了一种非常快速的测试方法(字面上编辑文件,上传文件并在浏览器中运行)。冲突存在问题,例如多个人试图编辑同一个文件,这就是为什么我要研究使用git。

    3. 如果在开发服务器上批准了所有内容,则会通过将其复制到其他服务器来实现。实时服务器可以在任何地方 - 我们使用我们自己管理的一些服务器,有时我们使用第三方托管公司 - 它会有所不同。

    4. 过去几天我一直在研究这个问题,而我发现的所有方法似乎都无法使用。有没有人对实现这一目标的最佳方法有任何见解?或者我正在研究一些甚至不适用于我试图解决的问题的东西?

      我很感激人们可以提供任何有用的建议。

      感谢。

2 个答案:

答案 0 :(得分:1)

我们在我工作的公司里有一个非常相似的设置。我们在开发服务器上实际上有不同的沙箱。换句话说,我们将repo克隆到不同的沙箱中。每个开发人员/设计人员都有一个沙箱。例如,如果有3个开发人员,则将有3个沙箱目录+ 1个登台目录

所以,开发人员john获取/home/john/example.com,可以在john.example.hot(设置vhosts)中查看 迈克在mike.example.com上查看了/home/mike/example.com tracy在tracy.example.com上查看了/home/tracy/example.com 并且将有一个额外的临时目录。 /home/staging/example.com staging.example.com

Staging将所有更改合并在一起,以便对其进行测试。所有这些目录只能通过内部IPS访问。

我们使用RSYNC将这些更改部署到生产中。有关RSYNC的更多信息:http://www.cyberciti.biz/tips/linux-use-rsync-transfer-mirror-files-directories.html

答案 1 :(得分:0)

您可以在测试计算机上创建一个git存储库,并让您的每个团队使用git将他们的更改推送到该存储库。通过这种方式,当他们的更改与其他人的更改发生冲突时,他们会收到通知。

典型的工作流程可能如下所示:

  1. Developer1在他的机器上改变了一些东西。
  2. Designer1更改了计算机上的某些文件
  3. Designer1将这些更改提交到他的本地git存储库
  4. Developer1将这些更改提交到他的本地git存储库
  5. Developer1将他的更改推送到开发机器。
  6. Designer1将他的更改推送到开发机器
    1. 如果与Developer1的更改发生冲突,现在将提示他们这些冲突是什么,并且必须解决这些冲突。
    2. 然后,已解决的更改将被推送到开发计算机。
  7. 这应该解决你的问题1.)和3.)并且将使2.)一个明确的行动,这意味着你的开发人员和设计师将会看到他们所覆盖的内容。如果同时在文件的不同部分发生更改,则git可以保留这两个更改而无需进一步的交互。

    但要注意,这仍然存在问题,没有人会在不受其他人干扰的情况下测试自己的变化,因为当有人试图测试某些东西时,这些变化可能随时改变。只有1台开发机器,你无法单独使用git来防止这种情况发生。由于您的团队规模很小,而且您目前的方法无法解决这个问题,因此对您来说可能没那么重要。