【问题标题】:Separate development and deployment git repositories单独的开发和部署 git 存储库
【发布时间】:2014-05-21 04:33:37
【问题描述】:

我最近遇到了一种管理项目及其可交付成果的方法。项目团队正在使用 git 存储库进行开发。还有另一个存储库用于部署工件。我可以看到这种方法的几个好处。

  1. 保持部署历史记录干净(没有开发人员提交)
  2. 对部署存储库的访问受限(开发人员无权访问部署存储库,因此无法推送到 master 和破坏事物)
  3. 所有依赖项都在部署存储库中。这降低了在不同部署阶段运行 bower install 或类似依赖项管理器并获得不同结果的风险。

您认为这种方法有哪些优点和缺点?

【问题讨论】:

  • This article 讨论了使用单个 Git 存储库实现大部分相同功能的管理模型;至于(2),您可以(并且应该)通过 SSH 来限制对部署服务器的访问。
  • 对部署服务器的限制访问并不能阻止人们意外推送到主服务器(即使使用 --force )。该项目仍在使用提到的 git 分支模型,但在项目准备好发布后(主分支中的所有更改),主分支的快照被复制到新发布分支中的部署存储库,并且发布分支被签出在服务器上。

标签: git deployment


【解决方案1】:

主要的好处是保持可交付的工件(可能很大并且可以包含二进制文件)与源代码库分开

  • 主存储库仍然是仅源存储库(表示文本内容,没有 -- 或很少和小的 -- 二进制文件)
  • 交付回购:
    • 独立管理,
    • 不必完全克隆(浅克隆就足够了,因为该功能 has been improved recently
    • 如有必要,可以“清理”(修剪旧交付现已过时)

主要的不便之处(对于这两种方法)是将二进制文件保存在 git 存储库中(这不适合此类工件)。
存在替代方案(使用 git):git-annex, bup, ....
或者你可以store those deliverable in a dedicated referential,比如Nexus (which is different from a git repo)

【讨论】:

  • 感谢 VonC。你能想到这种方法的一些缺点吗?
  • @Shaggy 你现在应该有足够的声望来投票了 ;)
  • 感谢 git-annex 和 bup。我已经得出结论,拥有不同 git 存储库的解决方案毕竟还不错。
猜你喜欢
  • 2014-06-17
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多