Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Git的Webapp开发/生产设置_Git_Version Control_Workflow - Fatal编程技术网

使用Git的Webapp开发/生产设置

使用Git的Webapp开发/生产设置,git,version-control,workflow,Git,Version Control,Workflow,我在一个小团队中工作,做网站和网络应用。我们在本地有一个开发服务器,它的设置与我们的标准生产服务器相同,我想将Git集成到我们的工作流程中。我目前正在使用Gitlab托管和访问存储库 我的设想是: 从中央存储库中提取 本地发展 推送到开发服务器 试验 合并 质量控制 打包并发送到生产服务器 我的问题涉及推进到开发服务器阶段。我希望能够将一个分支推送到dev服务器,然后立即在浏览器中浏览该分支-不是源代码,而是站点本身 是否有自我托管的软件可以用来实现这一点 就像我说的,我目前正在使用Gitl

我在一个小团队中工作,做网站和网络应用。我们在本地有一个开发服务器,它的设置与我们的标准生产服务器相同,我想将Git集成到我们的工作流程中。我目前正在使用Gitlab托管和访问存储库

我的设想是:

  • 从中央存储库中提取
  • 本地发展
  • 推送到开发服务器
  • 试验
  • 合并
  • 质量控制
  • 打包并发送到生产服务器
我的问题涉及推进到开发服务器阶段。我希望能够将一个分支推送到dev服务器,然后立即在浏览器中浏览该分支-不是源代码,而是站点本身

是否有自我托管的软件可以用来实现这一点

就像我说的,我目前正在使用Gitlab。我尝试过Gitorious(设置太多)、Girocco、git php,但无法让它们在我们的开发服务器上工作,至少在不更改它们的情况下是这样,这就破坏了拥有相同的开发服务器和生产服务器的意义

这个问题的前提是我的工作流程是合理的。如果我的问题因为糟糕的工作流程而变得毫无意义,我很乐意指出我工作流程中的错误

更新:我们主要使用PHP(各种框架和CMSE)开发,我们的服务器在Ubuntu 10.04的Nginx后面运行Apache。不同的开发商在同一栋楼的不同办公室,但在不同的网络上。虽然我们不能直接访问彼此的机器,但我们都可以访问任何端口上的dev服务器

更新X2: VonC的回答澄清了我的大部分问题,但我对这一点有了更好的理解,我想问一个更具体的问题:

由于我运行的是gitolite(Gitlab就是在此基础上构建的),而且gitolite存储的是裸存储库,所以在将分支推送到开发服务器时,我无法像在有工作文件夹的情况下那样在开发服务器上浏览站点。虽然我可以SSH到dev服务器的/var/www、
gitinit
git clonegit@127.0.0.1...
从gitolite bare存储库中,我更希望自动完成此操作

实现这一点的最直接方法是使用上述命令进行更新后挂钩吗?它似乎比我喜欢的要复杂一些,但我认为这是一个相当常见的用例,所以可能我遗漏了一些东西。

您可以结合:

  • 一个post接收挂钩,用于转到您的实时站点(非裸机回购),并使用推送到裸机回购的最新提交更新内容。
    请参阅“”(注意:在您的情况下不需要子模块,但此答案中描述的拉动机制仍然适用)

  • 如果您想管理谁可以推送到dev服务器,请单击。还可以控制已签出回购的chmod。
    见“

  • a根据部署环境管理某些文件内容:

smudge
”脚本可以在git签出过程中生成正确的内容,您可以组合:

  • 一个post接收挂钩,用于转到您的实时站点(非裸机回购),并使用推送到裸机回购的最新提交更新内容。
    请参阅“”(注意:在您的情况下不需要子模块,但此答案中描述的拉动机制仍然适用)

  • 如果您想管理谁可以推送到dev服务器,请单击。还可以控制已签出回购的chmod。
    见“

  • a根据部署环境管理某些文件内容:


smudge
”脚本可以在
git签出过程中生成正确的内容

需要有关实现的更多详细信息。IIS?阿帕奇?您是否使用任何web框架?轨道?德扬戈?你所有的服务器都是本地的吗,没有防火墙可以对付吗?我也在一条类似的船上;我想看看是否有一个解决方案可以在部署期间管理几个“变量”。例如,在我们的开发服务器上,我们将使用一个数据库连接字符串(对于我们的开发数据库服务器),对于生产,我们将使用生产数据库服务器。我正在寻找一种解决方案,它将按照您的建议执行,并根据部署上下文自动切换两个字符串。@JeffAllen-为此工作使用任何部署工具?我相信我在回答中提到的
post receive
钩子(以及中的详细信息)涵盖了您需要提到的
post update
(使用gitolite更容易设置,因为gitolite已经使用了
post-update
hook,这意味着您的链接必须被链接:)需要关于您的实现的更多详细信息。IIS?Apache?您是否使用任何web框架?Rails?Django?您的所有服务器都是本地的,没有防火墙可供竞争吗?我也在一条类似的船上;我想看看是否有一种解决方案可以管理几个“变量”例如,在我们的Dev服务器上,我们将使用一个数据库连接字符串(对于我们的Dev数据库服务器),对于生产,我们将使用生产数据库服务器。我正在寻找一种解决方案,该解决方案将按照您的建议执行,并根据部署上下文自动切换两个字符串。@JeffAllen-为此工作使用任何部署工具吗?我相信我在回答中提到的
post receive
挂钩(详细信息见)涵盖您需要提及的
更新后
(使用gitolite更容易设置,因为gitolite已经使用了
更新后
挂钩,这意味着您的挂钩必须被链接:)谢谢你,这非常有帮助,虽然我能把问题改写得更具体。谢谢你,这非常有帮助,尽管我能把问题改写得更具体。