使用git管理生产网站?

时间:2013-01-24 06:37:23

标签: git version-control git-clone git-post-receive git-bare

我有一个生产服务器上有大约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个小时。)

  5. 谢谢!

1 个答案:

答案 0 :(得分:2)

工作流程本身没有任何问题。但通常“规范”存储库是单独的,您可以使用rsync之类的其他机制手动部署到生产服务器。这样:

  1. 您的生产服务器更新与开发工作流程无关。如果您的生产服务器(永远!)需要在代码更改后完成任何工作 - 重新启动Web服务器,刷新一些缓存,进行架构更改等等 - 然后突然生产系统问题干扰了您更新代码的能力,这很糟糕。

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

  3. 打破网站需要两次意外(毁灭大师部署)而不是一次(毁灭大师)。

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

  5. 暂存服务器与生产类似,但可以破解。你只有两个开发人员,但你已经使用了截然不同的操作系统;我相当确定至少一个你没有使用与生产相同的开发环境。 :)

    不,你不能将文件添加到裸存储库。你需要一份工作副本来对工作树做任何事情。