10

Per quelli di voi che utilizzano Mercurial con l'estensione MQ:Come evitare accidentalmente 'hg push' invece di 'hg qpush'?

Questa è la seconda volta che mi presento accidentalmente le modifiche al repository centrale (hg push) invece di applicare una patch per la mia directory di lavoro (hg qpush).

Credo che questo sia davvero un peccato, perché si tratta di un errore molto semplice da fare ed ha molto gravi conseguenze (il minimo dover fare un hg backout e un extra hg push per ogni modifica presentata al fine di generare un nuovo commit che " annulla" la Las una al repository centrale, ma la storia diventa contorto e sgradevole.

il mio obiettivo è quello di configurare alcune alias o qualcosa nel mio ambiente in orden di fare hg push più difficile da fare per caso.

do hai qualche suggerimento? Stavo pensando qualcosa come:

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

Poiché si tratta di una domanda completamente soggettiva, questa viene utilizzata come wiki della comunità.

grazie!

+3

'alias qp = hg qpush' – kennytm

+1

+1. Ad ogni modo, ho visto più domande soggettive che non appartengono alla wiki della comunità :) –

+0

@KennyTM: hai ragione nel senso che dovrei fare gli alias per i comandi che uso di più. Ma so che alla fine dimenticherò di avere l'alias e provo a digitare 'hg qpush' solo perché sono già abituato. –

risposta

9

alcune idee vaghe:

  • è possibile rimuovere la posizione spinta predefinita dal repo
  • si potrebbe scrivere un "intendevi qpush sì, no?" Pre-push hook

Questo hook (riga di comando bash) richiede conferma prima di apportare modifiche al telecomando (testato con mercurial 1.4):

[hooks] 
preoutgoing.confirm = read -p 'Are you sure you want to push to remote? (y/n): '; echo $REPLY | grep -q 'y' 
  • si potrebbe alias spingere per qpush e alias pushtoserver a spingere (credo che questo funziona, ma non posso provarlo subito)
+0

Molto utile. I primi due suggerimenti sono precisamente il tipo di risposte che stavo cercando: diverse alternative per risolvere il mio problema. Mi piace l'idea dell'amo, ma non so ancora come scriverli. In questo modo posso continuare a usare i comandi nativi ma con una rete di sicurezza. Grazie. –

+0

il libro ha un buon capitolo sugli ami - collegamento aggiunto in risposta –

+0

Grazie jk, ho letto il capitolo e modificato la tua domanda con il gancio che ho trovato dopo averlo letto. –

6

Inserire il seguente nella vostra .hgrc:

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

Opere così:

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

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

Vedere anche lo alias section of the hgrc manpage.

+1

Bello. Grazie. Ora tutti sanno che non ho provato a farlo prima di postare =) –