¿Cómo puedo hacer que mercurial ignore cualquier archivo con la extensión.xxx?
file-extension hgignore (4)
Compruebe dónde se encuentra el archivo .hgignore y asegúrese de que esté en $ HOME o en la carpeta raíz del proyecto. Verifique el CASO (vs caso) de la extensión. Dudo que la coincidencia de patrones sea insensible a mayúsculas y minúsculas.
edición: probado, la coincidencia de patrones NO es sensible a mayúsculas y minúsculas. Por lo tanto, agregue "* .SUO" si desea ignorar los archivos con la extensión ".SUO".
Quiero que Mercurial ignore cualquier archivo con cierta extensión.
Por ejemplo, quería ignorar los archivos con una extensión .SUO. (No es necesario controlar la configuración de usuario de Visual Studio).
Así que cambié mi archivo .hgignore a esto:
syntax: glob
*.suo
Sin embargo, esto no tiene ningún efecto, y Mercurial todavía ve mi archivo .suo.
¿Qué estoy haciendo mal aquí?
Ejemplo para ignorar / excluir archivos con extensión .o:
.*/.o$
debe traducir a .*/.suo$
para las extensiones .suo.
He utilizado este método con éxito
Mercurial usa las entradas en un archivo llamado .hgignore
para determinar qué archivos ignora por completo. Normalmente se encuentra en el archivo raíz de su repositorio (y no en el directorio .hg, que podría pensar).
Puedes encontrar mas aqui:
http://www.selenic.com/mercurial/hgignore.5.html
Normalmente, utilizamos la sintaxis de expresiones regulares para garantizar que el caso no sea un factor en las extensiones:
# use regexp syntax.
syntax: regexp
(?i)/.dcu
(?i)/.identcache
(?i)/.dof
(?i)/.dsk
(?i)/.bak
(?i)/.old
De esa manera, asegura que incluso si por alguna razón cambia el caso de la extensión, aún se ignora.
Si, al ejecutar hg status
antes de modificar su archivo .hgignore, el archivo .suo tenía un ?
delante de él, entonces debería ser ignorado ahora. Si algo más ( M
o A
por ejemplo) ya está siendo rastreado por el repositorio y no dejará de ser rastreado mágicamente. En tal caso, deberá hacer hg remove
en el archivo para eliminarlo y hacer que hg deje de rastrearlo, o simplemente hg forget
de él para que hg deje de rastrearlo, pero mantenga el archivo. Cualquiera de los dos debe ir seguido de un commit.
Los únicos archivos que se omitirán de la lista de estado si su ruta coincide con un patrón en el archivo .hgignore son los archivos que no se rastrean. No tendría sentido omitir un archivo del que se realiza un seguimiento, ya que nunca vería si se ha modificado, agregado o eliminado.
Edición : Mercurial solo rastrea archivos (no puede hacer que rastree directorios vacíos), pero los patrones en .hgignore simplemente se ejecutan contra cadenas de las rutas de archivos relativas a la raíz del repositorio. Las mismas rutas relativas que le muestra cuando ejecuta hg status
. Entonces funciona como usted dice que quiere que funcione porque las siguientes líneas son una parte estándar de mis propios archivos .hgignore:
syntax: glob */obj/* */bin/* *.csproj.user *.suo
Nuevamente, cuando ejecutas el hg status
y muestra un archivo .suo, ¿qué único carácter está al principio de esa línea? ¿Es una M
, A
, R
!
o ?
¿personaje? ¿Cuál es el camino después de él?