una tortoise subir repositorio ignorar excluir eliminar desvincular descartar como carpetas carpeta cambios borrar archivos archivo agregar mercurial ignore hgignore

tortoise - Mercurial ignorar archivo



ignorar carpetas en git (3)

Intento que Mercurial ignore un archivo de configuración, pero no estoy logrando que funcione.

Creé un repositorio en mi servidor con hg init y cloné ese repositorio en mi computadora. Entonces quiero poder editar el archivo de configuraciónj pero no volver a enviar esos cambios al servidor.

He intentado crear un .hgignore en la raíz de mi clon, pero Mercurial señala el archivo con un ? y si lo confirmo o no, aún continúa registrando mis cambios de configuración.

¿Estoy creando el archivo .hgignore en el lugar incorrecto? ¿Es necesario que este archivo esté comprometido? ¿Necesita ser creado antes de iniciar el repositorio en el servidor?


Agregue el archivo .hgignore mismo al archivo .hgignore:

syntax: glob .hgignore

o simplemente, verifique el archivo .hgignore en su clon local ...


Incluso si ha ignorado archivos, Mercurial los rastreará una vez que se hayan agregado al repositorio.

Para eliminar su archivo de configuración del repositorio, puede usar

hg remove -Af file.cfg

Esto eliminará el archivo del repositorio (una vez confirmado) sin borrar su archivo local. Vea la hg help remove Sin embargo, ahora hay una eliminación registrada en el repositorio, y Mercurial eliminará ese archivo cuando su o cualquier otra persona se actualice a través de esa revisión .

También podría cambiarle el nombre y hacer que las personas copien el maestro en su archivo local, pero deberá coordinar las actualizaciones del archivo local.

hg rename file.cfg file.cfg.example


  • .hgignore no necesita ser creado antes de init
  • Si el archivo de configuración será utilizado por otros, será mejor que dedique el .hgignore para que otros no tengan que crearlo, pero esto no es necesario para que mercurial ignore sus archivos locales (vea el ejemplo)
  • Sí .hgignore tiene que estar en el directorio raíz

Ejemplo simple

Iniciar el repositorio:

$ mkdir test $ cd test $ hg init

Crea un archivo

$ touch foo $ hg st ? foo

Ahora crea un .hgignore, en el directorio raíz de tu repositorio:

$ echo ''foo'' > .hgignore

foo ahora se ignora:

$ hg st ? .hgignore

Tenga en cuenta que .hgignore no necesita estar comprometido para que esto funcione.

Un poco más complicado

Si tanto el archivo de configuración como el .hgignore (ignorando el archivo de configuración) se confirman en el repositorio, entonces sí, se hará un seguimiento de los cambios en el archivo de configuración (en otras palabras, .hgignore no tendrá efecto)

Crear config y confirmarlo

$ touch config $ hg ci config -Am ''adding conf''

Ignoralo:

$ echo ''config'' >> .hgignore

Commit .hgignore:

$ hg ci .hgignore -Am ''.hgignore''

Entonces, si clonas el repositorio:

$ cd .. $ hg clone test other-user $ cd other-user

y modificar config:

$ echo ''new config param'' >> config

entonces hg mostrará los cambios:

$ hg st M config

Como lidiar con esto?

Probablemente desee tener un archivo de configuración predeterminado principal, que esté versionado, en el repositorio, global.cfg

Y les pedirá a los usuarios que creen un local.cfg donde pondrán su configuración local. Y su script generará local.cfg si está presente: las configuraciones locales anulan las globales. Por supuesto, agregue una línea a .hgignore para ignorar local.cfg ;)

Alternativa: no hay archivo de configuración global, solo un config.example que los usuarios copian y modifican localmente. El inconveniente es que no mantendrá un seguimiento fácil de los cambios entre versiones.