【问题标题】:Is it possible to get a working tree in a bare git repo?是否有可能在裸 git repo 中获得工作树?
【发布时间】:2012-04-07 20:31:41
【问题描述】:

我目前正在使用 gitolite,并且在我的 post-receive 钩子中,如果任何传入的提交在 master 上,我将推送到(本地)镜像。

问题是,那个镜像只存在,因为我想自动部署和测试推送到 master:我无法获取 work.git 中的索引文件,所以我推送到non-bare work repo 获取工作树,并运行完全独立的 post-receive 钩子。

这种方法有两个问题:

  1. 感觉很蠢
  2. 如果测试失败,我会收到电子邮件通知我,而不是拒绝提交。 (就频率而言,实际上并不是什么大问题,我只是不喜欢它。)

处理这个问题的标准方法是什么?

【问题讨论】:

    标签: git


    【解决方案1】:

    这并不愚蠢。裸存储库被称为裸存储是有原因的。 (我认为这就是您所说的“原始”。)

    要回答你真正的问题,我认为你需要退后一步,问问你真正想要做什么。您要拒绝提交吗?提交是本地的,与推送无关,因此您必须自己运行自动化测试,无论是在预提交钩子中还是手动。您要拒绝推送吗? post-receive(或更新后)为时已晚,但如果您真的想这样做,您可以在 pre-receive(或更新)挂钩中运行测试.我怀疑这是一个坏主意:测试需要时间,而且我不确定你是否真的想等到你的推送挂起直到测试完成。 (关于拥有单独存储库的交易并不真正相关 - 钩子运行一些命令,无论它们是否涉及另一个存储库,它们都必须在钩子退出之前完成。)

    但也许更可持续的工作流程是:推送到 pre-master 分支,让自动化测试开始,当它们完成时,自动推送到 master 分支。如果测试失败,master 分支将不会更新,您可以获取您的电子邮件并查看它。

    【讨论】:

    • 这一切都是有道理的,尤其是关于不想等待测试完成推送的部分。基于this answer,我想我也可以使用更新前的钩子在开发端合并到 master 中。
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2019-06-19
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多