Configuration 如何避免意外';hg-push&x27;而不是';hg qpush';?

Configuration 如何避免意外';hg-push&x27;而不是';hg qpush';?,configuration,mercurial,development-environment,mercurial-queue,Configuration,Mercurial,Development Environment,Mercurial Queue,对于使用Mercurial和MQ扩展的用户: 这是我第二次意外地将更改提交到中央存储库(hg push),而不是将补丁应用到我的工作目录(hg qpush) 我认为这是非常不幸的,因为这是一个非常简单的错误,并且有非常严重的后果(至少需要对每个提交的更改执行hg backout和额外的hg push,以便生成一个“撤消”的新提交las将一个文件保存到中央存储库,但历史变得错综复杂,令人不快 我的目标是在orden中配置我的环境中的一些别名或其他东西,以使hg push更难意外地完成 你有什么建议

对于使用Mercurial和MQ扩展的用户:

这是我第二次意外地将更改提交到中央存储库(
hg push
),而不是将补丁应用到我的工作目录(
hg qpush

我认为这是非常不幸的,因为这是一个非常简单的错误,并且有非常严重的后果(至少需要对每个提交的更改执行
hg backout
和额外的
hg push
,以便生成一个“撤消”的新提交las将一个文件保存到中央存储库,但历史变得错综复杂,令人不快

我的目标是在orden中配置我的环境中的一些别名或其他东西,以使
hg push
更难意外地完成

你有什么建议吗?我在想:

[alias]
push=      <-- how to NOP the push command??
pushtoserver=push
[别名]
push=一些模糊的想法:

  • 您可以从回购中删除默认推送位置
  • 你可以写一个“你是说qpush吗?是的,不是”的预推
此钩子(bash命令行)在将更改推送到远程(使用mercurial 1.4测试)之前要求确认:

  • 您可以别名push-to-qpush和别名pushtoserver-to-push(我认为这是可行的,但现在无法尝试)

将以下内容放入您的.hgrc中:

[alias]
pushtoserver = push
push = 'Did you mean qpush or pushtoserver?'
工作原理如下:

$ hg push
alias 'push' resolves to unknown command 'Did you mean qpush or pushtoserver?'

$ hg pushtoserver
abort: repository default-push not found!

另请参见。

+1。无论如何,我看到了更多不属于社区wiki的主观问题:)@KennyTM:你说得对,我应该为我最常用的命令制作别名。但是我知道我最终会忘记我的别名,试着键入“hg qpush”,因为我已经习惯了。很好。谢谢现在每个人都知道我在发布=)之前没有试过这么做,这非常有帮助。前两个建议正是我所寻求的答案:解决我的问题的不同选择。我喜欢胡克这个主意,但我还不知道怎么写。这样,我可以继续使用本机命令,但有一个安全网。谢谢。谢谢jk,我读了这一章,并用我读过的钩子编辑了你的问题。因此,学生成为了大师。第二个建议似乎干扰了其他hg命令的行为。添加该钩子后,我无法克隆本地存储库。
$ hg push
alias 'push' resolves to unknown command 'Did you mean qpush or pushtoserver?'

$ hg pushtoserver
abort: repository default-push not found!