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.