10

Para aquellos de ustedes que usan Mercurial con la extensión MQ:Cómo evitar accidentalmente 'hg push' en lugar de 'hg qpush'?

Ésta es la segunda vez que accidentalmente incluir cambios en el repositorio central (hg push) en lugar de aplicar un parche a mi directorio de trabajo (hg qpush).

Creo que esto es muy lamentable, ya que es un error muy simple de hacer y tiene consecuencias muy graves (al menos tener que hacer un hg backout y un extra hg push para cada cambio presentado con el fin de generar un nuevo commit que " deshace" de las uno al repositorio central, pero la historia se vuelve complicado y desagradable.

mi objetivo es configurar algunos alias o algo en mi entorno con el propósito de hacer hg push más difícil de hacer por accidente.

do ¿Tiene alguna sugerencia? Estaba pensando algo así como:

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

Como esta es una pregunta completamente subjetiva, esta es la wiki de la comunidad.

gracias!

+3

'alias qp = hg qpush' – kennytm

+1

+1. De todos modos, he visto preguntas más subjetivas que no pertenecen a la wiki de la comunidad :) –

+0

@KennyTM: tienes razón en el sentido de que debería hacer alias para los comandos que uso más. Pero sé que eventualmente me olvidaré de que tengo el alias e intentaré escribir 'hg qpush' solo porque ya estoy acostumbrado. –

Respuesta

9

algunas ideas vagas:

  • se podría eliminar la ubicación de comando predeterminado de tu repositorio
  • se podría escribir un "quiso decir qpush sí, no?" Pre-push hook

Este gancho (línea de comando bash) solicita confirmación antes de enviar cambios al control remoto (probado 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' 
  • que podría empujar a alias qpush y pushtoserver alias para empujar (creo que esto funciona, pero no puedo probarlo ahora)
+0

Muy útil. Las dos primeras sugerencias son precisamente el tipo de respuestas que estaba buscando: diferentes alternativas para resolver mi problema. Me gusta la idea del gancho, pero todavía no sé cómo escribirlos. De esa manera puedo seguir usando los comandos nativos pero con una red de seguridad. Gracias. –

+0

el libro tiene un buen capítulo sobre los ganchos - agregó el enlace en la respuesta –

+0

Gracias jk, leí el capítulo y edité su pregunta con el gancho que se me ocurrió después de leerlo. –

6

poner lo siguiente en su .hgrc:

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

Obras como este:

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

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

Véase también el alias section of the hgrc manpage.

+1

Agradable. Gracias. Ahora todos saben que no intenté hacerlo antes de publicar =) –