Odio ver casi cada directorio en mi lista de repositorio cada archivo dos veces, una vez con un punto delante y otra vez sin ella. Traté de agregar .*
a mi archivo .hgignore, pero no tiene ningún efecto. ¿Es esta la sintaxis incorrecta, y más importante, es una mala idea intentar esto en primer lugar? Gracias.¿Cómo hacer que mercurial ignore todos los archivos ocultos?
Respuesta
Tienes casi la respuesta correcta en los comentarios de gavinb, pero el partido fue un poco de ancho. Sin embargo, el concepto clave sobre ignorar después de la cara lo proporcionó RogerPage, de nuevo en un comentario (¿qué pasa con que todos prefieran los comentarios a las respuestas?). mirada
Vamos a estos nueve archivos:
dir.with.dots/file.with.dots
dir.with.dots/filewithoutdots
dir.with.dots/.filestartwithdot
dirwithoutdots/file.with.dots
dirwithoutdots/filewithoutdots
dirwithoutdots/.filestartwithdot
.startwithdot/file.with.dots
.startwithdot/filewithoutdots
.startwithdot/.filestartwithdot
Si en el modo de expresión regular predeterminada para hgignore haces:
\..*
te ignoran ocho de los nueve archivos:
$ hg stat -i
I .hgignore
I .startwithdot/.filestartwithdot
I .startwithdot/file.with.dots
I .startwithdot/filewithoutdots
I dir.with.dots/.filestartwithdot
I dir.with.dots/file.with.dots
I dir.with.dots/filewithoutdots
I dirwithoutdots/.filestartwithdot
I dirwithoutdots/file.with.dots
que es más amplio de lo que dijiste que querías. Está ignorando cualquier cosa con un punto en cualquier parte en él.
ignorar todos archivos y Directores (no lo que ha dicho, pero lo que parece que quieren) que comienza con un punto se utiliza este patrón de expresión regular:
(^|/)\.
que dice que la cosa antes de que el literal punto tiene que ser el comienzo de la línea (^
) o una barra inclinada.
$ hg stat -i
I .hgignore
I .startwithdot/.filestartwithdot
I .startwithdot/file.with.dots
I .startwithdot/filewithoutdots
I dir.with.dots/.filestartwithdot
I dirwithoutdots/.filestartwithdot
que llamó sólo los archivos o directorios que empiezan por un punto.
Sin embargo, el otro concepto clave que se le ocurrió, fue que .hgignore no tiene ningún efecto después de que un archivo ha sido añadido. Evitará agregar comodines, pero siempre puede anular .hgignore con un hg add
explícito. y una vez que se han agregado los archivos, hgignore ya no se consulta.
Eso es realmente útil porque puede ignorar ampliamente (por ejemplo, .*\.jar
) y luego agregar las excepciones que desea manualmente sin tener que usar su archivo hgignore. Sin embargo, en este caso significa que necesita hg rm
los archivos que ya ha agregado accidentalmente, y tonfa mostró cómo hacerlo (siempre que no haya espacios en sus nombres de archivo).
Al final suena como lo que quiere en su archivo .hgignore es:
(^|/)\._
y que tiene que quitar los que ya haya añadido:
find . -type f -name "._*" -print0 |xargs -0 hg rm
Muy, muy minucioso. ¡Prestigio! –
utilizo esto en mi .hgignore
:
syntax: regexp
# dotfiles
(?<![^/])\.
que dice: períodos no precedidos por algo más que af orward slash.
solución de Ry4an también es bueno, que he usado antes de que uno también. No estoy seguro de cuál es más eficiente.
- 1. Hacer que Python ignore los archivos .pyc
- 2. ¿Cómo hacer que .gitignore ignore los archivos compilados sin extensión?
- 3. ¿Cómo ignorar los archivos ocultos usando os.listdir()?
- 4. Cómo decirle a SVN que ignore los archivos de todos los miembros del equipo
- 5. Cómo hacer que SVN ADD ignore los binarios
- 6. ¿Cómo hacer que 'svn log' ignore los cambios de propiedad?
- 7. ¿Cómo puedo hacer que Inno Setup ignore los directorios vacíos?
- 8. Archivo Conditional Mercurial Ignore
- 9. ¿Cómo haces que Git ignore los archivos sin usar .gitignore?
- 10. Cómo hacer que Git en Windows ignore los enlaces simbólicos
- 11. Cómo olvidar todos los archivos eliminados con Mercurial
- 12. Git: ¿cómo ignorar los directorios ocultos?
- 13. ¿Cómo dejar que Mercurial ignore todo excepto el archivo * .cs?
- 14. ¿Cómo hacer 'hg remove' de Mercurial para todos los archivos perdidos?
- 15. ¿Cómo hacer que git ignore los cambios en el caso?
- 16. ¿Puedo hacer que git diff ignore los cambios de permisos?
- 17. ¿Cómo hacer que Hibernate ignore un método?
- 18. Hacer ejecutables todos los archivos PHP (recursivamente)
- 19. Mercurial hg mv no mueve todos los archivos
- 20. Nodejs - Buscar archivos ocultos
- 21. ¿Cómo puedo hacer que Subversion ignore un directorio?
- 22. Comprobar si los elementos de todos los niños están ocultos
- 23. ¿Cómo maneja Mercurial los archivos divididos?
- 24. Mercurial: ¿cómo descartar todos los cambios locales, incluidos los archivos no versionados?
- 25. postal incluyendo archivos ocultos
- 26. ¿Cómo puedo grep archivos ocultos?
- 27. ¿Se puede hacer Mercurial para conservar los permisos de archivos?
- 28. Git-ignore ciertos archivos en subdirectorios, pero no todos
- 29. Mercurial: ¿todos los archivos que cambiaron en un conjunto de cambios?
- 30. ¿Cómo hacer que Proguard ignore las bibliotecas externas?
La sintaxis sería algo más parecido a '\ .. * 'pero es muy sospechoso que usted describe que tiene todos los archivos, con un punto y por fuera. Normalmente no tendrías archivos de puntos en un repositorio. ¿Qué archivos estás rastreando? ('hg manifest') – gavinb
Esto desafortunadamente todavía no funcionó. Estaba exagerando un poco cuando dije que hay archivos de puntos en todas partes, pero en varios directorios cada archivo tiene un archivo de puntos equivalente. Edité .hgignore con su sintaxis, realicé 'hg addremove', e hice una confirmación, y todos siguen en mi repositorio. –
La sintaxis depende de si está utilizando sintaxis glob o re (por ejemplo, una línea del formulario 'sintaxis: re' encima de la directiva). Pero '. *' Es la sintaxis correcta de glob. Si los archivos ya están comprometidos, tendrá que eliminarlos individualmente (o con 'hg rm. *'), Y addremove no hará esto por usted. –