7

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

我一直在考虑将 github 用于我们的项目,主要目标有 3 个:

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

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

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

这是我们当前的工作流程,我根本不明白 github 是如何适应这个的。我意识到我们的工作流程将需要改变,但我无法找到一个似乎以任何方式适合此的流程:

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

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

  3. 当开发服务器上的所有内容都已获得批准后,通过将其复制到不同的服务器来使其生效。实时服务器可以在任何地方——我们使用一些我们自己管理的服务器,有时我们使用第三方托管公司——它会有所不同。

在过去的几天里,我一直在研究这个问题,我发现的所有方法似乎都不适合我们使用。有没有人对实现这一目标的最佳方法有任何见解?还是我正在研究一些甚至不适用于我要解决的问题的东西?

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

谢谢。

4

2 回答 2

1

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

因此,开发人员 john 获得 /home/john/example.com 并且可以在 john.example.hot 中查看(设置虚拟主机) mike 获得 /home/mike/example.com 在 mike.example.com 中查看 tracy 获得 /home /tracy/example.com 在 tracy.example.com 上查看 并且会有一个额外的暂存目录。/home/staging/example.com staging.example.com

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

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

于 2013-10-23T18:39:02.823 回答
0

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

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

  1. Developer1 在他的机器上改变了一些东西。
  2. Designer1 更改了他机器上的一些文件
  3. Designer1 将这些更改提交到他的本地 git 存储库
  4. Developer1 将这些更改提交到他的本地 git 存储库
  5. Developer1 将他的更改推送到开发机器。
  6. Designer1 将他的更改推送到开发机器
    1. 如果与 Developer1 的更改发生冲突,现在将提示他这些冲突是什么并且必须解决它们。
    2. 然后解决的更改将被推送到开发机器。

这应该可以解决您的问题 1.) 和 3.),并使 2.) 成为显式操作,这意味着您的开发人员和设计人员将看到他们正在覆盖的内容。如果更改同时发生在文件的不同部分,那么 git 可能能够保留这两个更改而无需进一步交互。

但是请注意,这仍然存在问题,没有人会在不受其他人干扰的情况下测试自己的更改,因为当有人尝试测试某些东西时,这些更改可能随时改变。仅使用 1 台开发机器,您无法单独使用 git 来防止这种情况发生。由于您的团队很小,并且您当前的方法也无法解决此问题,因此对您而言可能意义不大。

于 2013-10-23T17:24:56.040 回答