Pregunta ¿Puedes evitar el empuje por defecto, pero permitir el tirón?


Quiero saber si hay una manera de desactivar el impulso predeterminado, pero mantenga el impulso predeterminado al usar Mercurial. No quiero contaminar accidentalmente el repositorio maestro empujando inadvertidamente desde un repositorio experimental.


5
2017-07-21 17:27


origen


Respuestas:


Su solución es probablemente la más rápida y ciertamente efectiva. Si hay alguno oficial forma en que sería usando un preoutgoing gancho:

[hooks]
preoutgoing = bash -c 'read -p "Really push to $HG_URL? " -n 1 RESP ; [ "$RESP" == "y" ]'

que le preguntará si desea enviar y le proporcionará la URL a la que iría como recordatorio.


3
2017-07-21 20:22



Pude resolver esto poniendo lo siguiente en mi .hg/hgrc archivo, pero me preguntaba si hay una forma mejor / oficial.

[paths]
default = http://server/hg/repo
default-push = .

7
2017-07-21 17:29



Me gusta tu propia respuesta de configuración paths.default-push = . - Es simple y está claro que funcionará.

Otra opción sería un gancho de pre-push:

[hooks]
pre-push = if [ $HG_PATS == "[]" -o $HG_PATS == "['default']" ]; then
               read -p "Really push to default? " -n 1; echo
               [ "$REPLY" == "y" ]
           fi

(Aquí estoy aprovechando cómo se puede dividir un valor largo en varias líneas al sangrarlas en un archivo de configuración de Mercurial).

Un empuje al valor predeterminado se ve esto

% hg push
Really push to default? n
warning: pre-push hook exited with status 1

donde escribi el n. Los ganchos comprueban ambos sin argumentos ($HG_PATS == "[]") y por defecto como argumento ($HG_PATS == "['default']") y solo te avisará en esos casos. los $HG_PATS variable fue introducida en Mercurial 1.6.

PD: Vi que actualizaste la pregunta y pediste una solución en PowerShell, pero me temo que no sé nada sobre ese idioma. Sin embargo, debería poder levantar los conceptos importantes de esta respuesta usted mismo.


2
2017-07-21 20:17



La respuesta previamente publicada, en hgrc

   default-push = .

ES CASI pero no del todo correcto. Se puede romper, por ejemplo. Si tienes tu directorio personal.

Aquí está mi BKM actual para deshabilitar el empuje predeterminado:

He embellecido la idea de establecer paths.default-push en ~ / .hgrc, lo que lo hace un poco más auto-documentado y menos propenso a errores, ya que, como señalo a continuación, configuré default-push =. No siempre desactiva el empuje.

en ~ / .hgrc

[paths]
# my main project master repo
project-master = ...

#DISABLING IMPLICIT PUSH
#     to prevent embarassment from accidentally pushing to the project master repo
#     instead of, in my case, a repo that has fine grain commits
#     that the rest of the team does not want to see in the project master repo
#default-push = .
#     this works mostly, but NOT if you use hg on your home directory
#     since '.' in ~/.hgrc seems to be interpreted as -R ~
#default-push = /NONEXISTENT_default-push_--_must_specify_push_target_explicity
#     this works ok, but I can clean up the error message using blanks
#     keeping this around because blanks in pathnames confuses many UNIX tools
default-push = /'NONEXISTENT default-push -- must specify push target explicitly'
#     this amounts to disabling implicit push targets.

0
2018-06-18 19:17