【问题标题】:Separate Git Deployments on a Single Server在单个服务器上单独部署 Git
【发布时间】:2014-05-07 01:54:54
【问题描述】:

我想在我的应用程序中加入一项功能,允许用户在版本之间进行更改,特别是查看 sprint 之间应用程序的差异。用户只需从下拉列表中选择一个版本(Sprint A、Sprint B 等),页面就会刷新,显示当时应用程序的状态。

这本身应该不是什么大问题。我想我们会有一个 Git 部署框架,它会检查服务器上的相应分支。

问题是,例如,我想让业务人员能够查看 Sprint B 的应用程序,而开发人员可以同时演示他为 Sprint C 所做的工作,没有一个分支结帐会破坏另一个分支。

每次更改分支以查看版本时,都会影响查看该服务器的每个人。

有没有办法允许一个用户查看服务器上的另一个分支而不影响其他任何人,并且可能不会对该服务器上的文件进行持久更改?

【问题讨论】:

  • 这不是编码问题,而是服务器工程和概念问题。我建议在服务器故障上发帖。

标签: git deployment version-control branch


【解决方案1】:

我认为我们将有一个 Git 部署框架,它将检查服务器上的适当分支。

这是一个很好的方法,但它需要检查/更新不同文件夹中的相应分支(并且您的 webapp 需要根据用户选择重定向页面)

通常使用 post-receive 挂钩来触发每个分支的进程:例如,请参阅“how to process files on a branch in post-receive hook in git

#!/bin/bash

while read oldrev newrev ref
do
  branch=`echo $ref | cut -d/ -f3`

  if [ "master" == "$branch" ]; then
    ....

【讨论】:

  • 我不确定我是否完全理解你在说什么。你能详细说明一下吗?
  • @user2747911 我是说钩子可以帮助自动更新多个工作树的过程,每个分支一个,以便您的 Web 服务器显示它们(在不同的 url 下),具体取决于您的视图想要展示。 “更新工作树”是您在我在stackoverflow.com/a/11323004/6309 中提到的脚本中看到的git checkout
  • 感谢 VonC,我喜欢将这些分支部署到不同 URL 的想法。 --work-tree 选项有点棘手,它没有记录在 git-checkout 手册页 [1] 中,我认为我能够让它工作一次,但我主要收到关于它不是有效的错误选项。
  • @user2747911 “我经常收到关于该选项无效的错误”:这可能是因为 --work-tree 不是 git checkout 的选项。它是git (git-scm.com/docs/git) 的一个选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多