是否有一个Git命令用于在推送到master之前添加通知/警告

时间:2017-11-14 16:17:42

标签: git

我有一个用例,其他人依赖我从主服务器上下载时没有启用标志,但我需要在本地处理repo时启用它。

我希望/希望? Git有办法添加一个通知或警告,当请求推送到主控时触发......作为各种“提醒”。

所以也许我的工作流程看起来像这样:

  1. 发展,发展,发展。
  2. git add -A
  3. git status
  4. git commit -m“为...添加了功能”
  5. git checkout master
  6. git merge that-branch
  7. git push origin master
  8. 警告“这是一条自定义消息,提醒您禁用该标志。”
  9. git push origin master
  10. - >第二次尝试后推送到主控的文件

1 个答案:

答案 0 :(得分:4)

使用pre-push hook推送时,可以强制设置正确的设置。

您需要做的就是编写一个脚本(使用您喜欢的任何语言)来测试您是否将标志设置为正确的设置,如果没有,则失败并显示错误消息。

当标记设置不正确时,您还可以创建一个pre-commit挂钩,禁止向某个分支(例如master)提交。

但是,此策略存在一个大问题:每次在不可呈现状态下提交标志时,您都会将工作流的一部分编码到项目的历史记录中。 (一个类似的例子是提交由IDE生成的临时文件,然后在发布之前删除它们。它们仍然是历史记录的一部分(除非你rebase),这显然是坏的。)

更好的策略是修改您的项目或工具,以便在存在某个文件时打开开发人员设置(可能是一个名为.development的空文件),并忽略该文件,以便它永远不会显示在您的历史记录中,您仍然可以通过创建该文件在本地获得正确的设置。这样做有多困难取决于您正在使用的其他技术。我还没有弄清楚如何使用cabal来做到这一点。

另一种在每种情况下都会起作用但不太方便的策略是添加pre-commit钩子,它总是拒绝开发者设置。因此,当您在开启开发人员设置的情况下在本地工作时,您在提交时会收到错误消息。要提交,您必须避免添加不可撤消的状态,这可能需要使用git add --patch,这绝对意味着您无法使用git commit --all