mercurial hgignore

¿Hay una opción de ignorar en el compromiso en mercurial?



hgignore (4)

¿Hay alguna forma de ignorar los cambios en algunos archivos en una confirmación con mercurial?

Tengo una situación específica en la que tenemos un archivo oracle tnsnames.ora predeterminado que apunta a 127.0.0.1, pero algunos desarrolladores lo modificarán para apuntar a otros sistemas, pero no queremos cambiar el archivo predeterminado.

En subversión, simplemente agregué esto a la lista de cambios de ignorar en la confirmación. ¿Hay alguna manera de hacer esto en mercurial?


Busque el archivo .hgignore en la documentación de Mercurial.

Aquí hay un ejemplo de archivo de ignorar.

# use glob syntax. syntax: glob *.elc *.pyc *~ # switch to regexp syntax. syntax: regexp ^/.pc/


Podría alias comprometerse con algo como ''hg commit -X archivo_excluido.ext'' Nunca he usado mercurial, así que solo voy por la página del manual aquí.


Si los archivos que desea omitir del comando "hg commit" ya están "rastreados", debe usar la opción -X. El patrón pasado a -X es bastante flexible, por lo que es posible ejecutar, por ejemplo:

% hg stat A etc/foo.conf M src/bar.c M lib/libbar/loader.c % hg commit -X ''**.conf''

para evitar comprometer cualquier archivo con una extensión ".conf", independientemente de qué tan profundo en el árbol fuente viva. En el espacio de trabajo que se muestra arriba, esto confirmaría "src / bar.c" y "lib / libbar / loader.c" pero no "etc / foo.conf".

Para excluir múltiples patrones de nombres de archivos, use múltiples opciones -X, es decir:

% hg commit -X ''**.conf'' -X ''**.sh''


Tradicionalmente, esto se soluciona al no versionar el archivo en sí, sino al versionar una copia de la misma como plantilla para que otros la usen.

Así que hg mv tnsnames.ora tnsnames.ora-template , luego commit, luego haz una copia directa del sistema de archivos de tnsnames.ora-template a tnsnames.ora, y agrega tnsnames.ora al archivo .hgignore.

Los cambios posteriores a la plantilla seguirán siendo expulsados, pero en realidad no cambiarán el entorno de trabajo a menos que alguien copie la plantilla en el archivo real.