【问题标题】:Using git to manage a production web site?使用 git 管理生产网站?
【发布时间】:2013-01-07 20:29:10
【问题描述】:

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 2012-03-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多