2012-03-31 82 views
2

我在一个小团队中工作,负责做网站以及网络应用程序。我们的本地开发服务器与我们的标准生产服务器完全相同,我希望将Git集成到我们的工作流程中。我目前使用Gitlab来托管和访问存储库。使用Git的Web应用程序开发/生产设置

我如何设想是:

  • 从中央库拉
  • 在当地发展
  • 推动开发服务器
  • 测试
  • 合并
  • QC
  • 包装和船舶到生产服务器

我的问题涉及推送到dev服务器阶段。我希望能够将分支推送到开发服务器,然后立即在浏览器中浏览该分支 - 不是源代码,而是网站本身。

是否有可用于完成此目的的自托管软件?

就像我说的,我目前正在使用Gitlab。我已经试过Gitorious(设置太多),Girocco,git-php,并且无法让他们在我们的开发服务器上工作,至少不是没有改变他们,这打破了拥有相同开发和生产服务器的观点。

这个问题是基于我的工作流程是健全的。如果我的问题由于工作流程不佳而变得模糊,我很乐意在工作流程中指出错误。

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

更新X2: VonC的答案清理我最有问题的,但理解这一点比较好,我想问一个更具体一点的问题:

正如我跑gitolite( Gitlab就是建立在这个基础之上的),而当gitolite存储裸仓库时,在将分支推送到开发服务器时,如果有工作文件夹,我无法以我的方式在开发服务器上浏览该站点。虽然我可以从gitolite裸仓库进入dev服务器的/ var/www,git initgit clone [email protected],但我更喜欢这会自动完成。

完成此操作的最直接方法是使用上述命令进行更新后的挂钩吗?这似乎比我想象的要复杂一些,但我想这是一个相当常见的用例,所以也许我只是错过了一些东西。

+0

需要关于您的实施的更多细节。 IIS? Apache的?你使用任何Web框架? Rails的? Django的?你所有的服务器都是本地的,没有防火墙可以与之抗衡吗? – Andy 2012-03-31 18:22:43

+0

更新后回答 – user1305321 2012-03-31 18:31:54

+0

我在一艘类似的船上;我有兴趣看看是否有解决方案可以在部署期间管理几个“变量”。例如,在我们的Dev服务器上,我们将使用一个数据库连接字符串(用于我们的开发数据库服务器),对于生产,我们将使用生产数据库服务器。我正在寻找一种解决方案,它将完成您的建议,并根据部署上下文自动切换一些字符串。 – 2012-03-31 21:14:06

回答

0

您可以结合:

  • 后,收到勾走你的活动网站(非裸露的回购协议),并用最新的内容的提交推到裸露的回购协议。
    见“Git submodule on remote bare”(注:子模块是没有必要在你的情况,但这个答案说明的牵引机构仍然适用)

  • authorization layer like gitolite,如果要管理谁可以推到开发服务器。并且还可以控制检出的repo上的chmod。
    请参阅 “ee

  • 一个filter driver为了根据部署环境中管理特定文件的内容:

filter driver

A 'smudge' 脚本可以生成正确的内容在git checkout期间。

+0

谢谢,这有很大的帮助,尽管我能够将问题重新说明为更具体。 – user1305321 2012-04-01 20:26:34

相关问题