tag subversion son ramas que informatica desarrollo branches mercurial branch push dvcs

mercurial - subversion - svn branches tags trunk



¿Puedo marcar una rama como ''no voy a empujar''? (3)

Yo uso ramas con nombre en Mercurial.

Al hacerlo, he creado una rama llamada parque infantil donde puedo probar varios experimentos extravagantes. Nunca pretendo fusionar esta rama con ninguna otra y nunca quiero enviarla a nuestro repositorio principal.

Desde que lo creé, cada vez que hago un push me dicen que he agregado una nueva rama y tengo que usar la bandera --new-branch . En este punto, hg push -b default (o cualquier rama que esté presionando) funciona bien, pero es molesto. ¿Hay alguna forma de suprimir ese mensaje al dejar saber a Hg que no estoy interesado en impulsar esa rama alguna vez?


Además de la excelente respuesta anterior sobre las fases, también puede especificar ''default-path'' (en la sección [paths] de su .hgrc) para referirse al repositorio local:

[paths] default = ... default-push = .

Esto hará que todos los conjuntos de cambios salientes se comparen con el repositorio especificado. En este caso, al comparar los conjuntos de cambios salientes en su repositorio local, con los repositorios locales, no hay nada que empujar.

Todavía puede extraer / actualizar / fusionar desde el repositorio principal, pero ningún empujón enviará nada a ese repositorio principal.

Si trabaja en varias máquinas / repositorios, puede configurar uno como se describe arriba, y configurar los otros para especificar la ruta ''predeterminada'' para apuntar al servidor que se empuja a sí mismo. De esta forma, las otras máquinas pueden empujar / arrastrar a su repositorio central local, y estos conjuntos de cambios nunca escaparán de su colección cuidadosamente configurada de repositorios.


Actualizar:

Mercurial 2.1 introdujo el comando hg phase que permite a los usuarios controlar qué conjuntos de cambios se intercambian con repositorios remotos. La respuesta de @MartinGeisler a esta pregunta detalla este método.

Respuesta Original:

Si desea crear una sucursal local de su código, tiene un par de opciones. Puede hg clone el repositorio que creará localmente una rama de todo el repositorio en su sistema de archivos. La otra alternativa es que puedes intentar usar una extensión Mercurial como LocalbranchExtension .

Hay muchas maneras de ramificarse en Mercurial sin usar una rama con nombre. Simplemente encuentre un método que se adapte a sus necesidades.

Lectura adicional: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/


Comenzando con Mercurial 2.1 (que se lanzará en una semana el 1 de febrero), puede marcar el secreto de sus conjuntos de cambios para evitar que sean enviados a otro repositorio. Utiliza el nuevo comando hg phase para hacer esto:

$ hg phase --force --secret .

Esto marca la revisión principal del directorio de trabajo actual ( . ) Como estando en la fase secret . Los conjuntos de cambios secretos son locales para su repositorio: no serán empujados o tirados. Empujar ahora se ve así:

$ hg push pushing to /home/mg/tmp/repo searching for changes no changes to push but 2 secret changesets

No hay un mecanismo equivalente en versiones anteriores de Mercurial. Allí, su mejor opción es crear un clon local para los conjuntos de cambios que no desea impulsar.