10

Dla tych z was, które używają Mercurial z rozszerzeniem MQ:Jak uniknąć przypadkowego "hg push" zamiast "hg qpush"?

Jest to drugi raz, kiedy przypadkowo złożyć zmian w centralnym repozytorium (hg push) zamiast stosowania poprawkę do mojego katalogu roboczym (hg qpush).

Myślę, że to bardzo niefortunne, ponieważ jest to bardzo prosty błąd zrobić i ma bardzo poważne konsekwencje (najmniej konieczności zrobić hg backout i dodatkowy hg push dla każdego złożonego zmian w celu wygenerowania nowego zobowiązać, że " cofa”LAS jeden do centralnego repozytorium, ale historia staje się zawiłe i nieprzyjemne.

moim celem jest, aby skonfigurować jakiś alias lub coś w moim środowisku w orden aby hg push trudniej zrobić przez przypadek.

do masz jakieś sugestie? Myślałem coś takiego:

[alias] 
push=  <-- how to NOP the push command?? 
pushtoserver=push 

Ponieważ jest to całkowicie subiektywne pytanie, jest to wiki społeczności.

dziękuję!

+3

'alias qp = hg qpush' – kennytm

+1

+1. Tak czy inaczej, widziałem więcej subiektywnych pytań, które nie należą do społecznościowej wiki :) –

+0

@KennyTM: masz rację w tym sensie, że powinienem robić aliasy dla poleceń, których używam najbardziej. Ale wiem, że w końcu zapomnę, że mam alias i staram się pisać "hg qpush" tylko dlatego, że jestem już do tego przyzwyczajony. –

Odpowiedz

9

jakieś mgliste pomysły:

  • można usunąć domyślną lokalizację wypychania z repo
  • można napisać "nie znaczy qpush tak, nie?" Pre-Push hook

Ten hak (wiersz poleceń basha) prosi o potwierdzenie przed przesuwaniem zmian na pilocie (testowane z Merkurial 1.4):

[hooks] 
preoutgoing.confirm = read -p 'Are you sure you want to push to remote? (y/n): '; echo $REPLY | grep -q 'y' 
  • można alias push qpush i alias pushtoserver do pchania (myślę, że to działa, ale nie można spróbować go teraz)
+0

Bardzo pomocny. Dwie pierwsze sugestie są właśnie takimi rodzajami odpowiedzi, których szukałem: różnymi alternatywami, aby rozwiązać mój problem. Podoba mi się pomysł na hak, ale nie wiem jak je jeszcze napisać. W ten sposób mogę nadal korzystać z natywnych poleceń, ale z siatką bezpieczeństwa. Dzięki. –

+0

książka ma dobry rozdział na temat haków - dodano link w odpowiedzi –

+0

Dziękuję jk, przeczytałem rozdział i zredagowałem twoje pytanie z hakiem, który wymyśliłem po przeczytaniu. –

6

umieścić następujące w .hgrc:

[alias] 
pushtoserver = push 
push = 'Did you mean qpush or pushtoserver?' 

Works tak:

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

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

Zobacz także alias section of the hgrc manpage.

+1

Nice. Dzięki. Teraz wszyscy wiedzą, że nie próbowałem tego zrobić przed opublikowaniem =) –