【问题标题】:Modifying last n commits and appending a line to all of them through hook修改最后 n 次提交并通过钩子向所有提交追加一行
【发布时间】:2015-04-27 06:58:40
【问题描述】:

我有一个本地代码审查流程,其中审查者在已审查的分支顶部添加一个空提交并将 s 发送回开发人员。

然后开发人员将其推送到规范。

我想写一个 pre-push 钩子,它会查看最后一次提交是否表明代码已经过审查,然后在分支上所有提交的提交消息中附加一个“PEER-REVIEWED”字样,然后将其推送到 Canonical !

(使用:我可以在我的规范中看到任何提交,并查看它是否经过审核。如果已审核,则其中将包含“PEER-REVIEWED”字样。)

  1. 这种方法的实用性如何?
  2. 如何在所有被推送的提交的提交消息中自动附加单词。

谢谢!

【问题讨论】:

  • 你应该三思而后行;这听起来真是个坏主意。您是否意识到这种“同行评审过程”涉及重写整个分支(即更改其所有提交的 SHA)?这可能不是你想要的。
  • 是的!我完全理解后果。一旦开发人员推送已审核的分支,该分支就变得毫无用处。所以我们建议他创建一个新的分支。至于重写历史,分支还没有被推送到规范,所以如果我重写历史从而改变SHA会有什么不同。
  • 糟糕的想法。你们这样做的方式我实际上建议:在所有提交中添加一个“PEER_REVIEWED”,并且只有在顶部没有空提交时才认为它没有被审查。 :-P 所以...提交钩子就足够了。

标签: git git-rebase githooks git-amend


【解决方案1】:

在一个分支中将每个提交标记为“peer-reviewed”是完全没有用的,首先因为你写的审查发生在分支的顶部(HEAD)是不正确的.临时提交可能正在进行中(并且无法正常工作)。

git commit 有一个--allow-empty 参数,它的主要用途是触发钩子脚本。 所以我建议如果同行评审发生,只需向分支添加一个新的 - 空 - 提交(它将转到顶部),给它提交消息“peer-reviewed”并创建一个检查这个提交消息的钩子.

【讨论】:

  • 是的,该选项可用,但是。我使用 rebase 将提交放在规范的 master 上,而不是合并。因此,如果推送了某个没有审查提交的分支并且下一个推送分支有它,那么我无法找到提交是否被审查的天气。
  • 这就是我不喜欢rebase 的原因,因为它具有破坏性,我会丢失所有历史记录,更不用说某些功能分支合并到 master 的日期了。这意味着您的 Canonical 和开发存储库具有完全不同的历史,我喜欢能够提取整个生产存储库并从那里继续开发。
猜你喜欢
  • 2012-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多