4

我在生产服务器上有一个包含大约 15,000 个文件的网站。一位远程开发人员现在正在网站上完成大部分工作,但我偶尔也需要进行一些编辑。很明显,我们需要一些版本控制,所以我正在尝试设置 git。

我真的很想保持设置简单明了。我们不需要任何类型的集成商来查看我们的更改 - 我们都完全信任将更改推送到生产站点。我也认为没有必要在使它们生效之前将更改推送到登台服务器,因为我们无法在本地机器上测试任何我们无法测试的东西。我基本上只是想要一些可以防止我们破坏彼此文件的东西。这是我想到的场景:

          Production Server
              ↗↙ ↖↘          
Developer1(LAMP)  Developer2(WAMP)

问题:

  1. 这个工作流程对于两个开发人员(其中一个只偶尔进行编辑)的团队有意义还是有更好的?

  2. 在开发人员和生产服务器之间添加临时服务器有什么好处吗?

  3. 我假设生产服务器应该是一个裸仓库,带有一个指向 webroot 文件夹的 post-receive 钩子,我们会将副本克隆到每个开发人员的机器上,然后 git commit / git push 将任何更改启动回生产?

  4. 有什么简单的方法可以在生产服务器上创建一个裸仓库,然后将站点现有的 15,000 个文件添加到其中?还是我必须将它们下载到本地工作站上的克隆存储库,然后执行 git add / commit / push 以将它们加载到生产服务器存储库中?(他们可能需要将近 13 个小时才能上传。)

谢谢!

4

1 回答 1

3

工作流程本身没有问题。但通常“规范”存储库是独立的,您可以使用其他一些机制(如 rsync)手动部署到生产服务器。这边走:

  1. 您的生产服务器更新与您的开发工作流程无关。如果您的生产服务器(曾经!)在代码更改后需要完成任何工作——重新启动网络服务器、刷新一些缓存、进行模式更改等——那么突然间生产系统的问题会干扰你更新代码的能力,这很糟糕。

  2. 您不必担心意外泄露对.git目录的访问权限并暴露所有源代码和开发历史。

  3. 破坏站点需要两次事故(破坏大师部署),而不是一次(破坏大师)。

  4. 也许不是你们两个人关心的问题,但是让“更新站点”按钮与“更新代码”按钮具有不同的授权是很有用的。

暂存服务器的存在类似于生产,但易损坏。您只有两个开发人员,但您已经在使用截然不同的操作系统;我相当肯定至少你们中的一个人没有使用与生产相同的开发环境。:)

不,您不能将文件添加到裸存储库。您需要一个工作副本才能对工作树进行任何操作。

于 2013-01-24T07:34:30.153 回答