2009-08-27 13 views
8

Comencé un proyecto y lo agregué a Mercurial. Pero quiero tomar el archivo *.cs solo bajo control de versión. Así que tengo que agregar bin, obj, sln, suo, _resharper carpeta etc. para ignorar el patrón.¿Cómo dejar que Mercurial ignore todo excepto el archivo * .cs?

¿Cómo dejar que Hg solo monitoree cierto tipo de archivo como la lista blanca? ¿Cómo hacer eso en Subversion?

+0

¿Mercurio o Subversion o ambos? – inerte

+0

Solo Mercurial está bien, ambos si saben – prime23

Respuesta

8

Sólo añadir las extensiones a su archivo .hgignore ya que vienen a través de ellos:.

syntax: glob 
*.bin 
*.obj 

etc. No es un montón de trabajo, y se documenta en el resto del mundo exactamente qué tipo de archivos se considera poco importante para el control de revisiones.

incluso puede configurar un archivo global de ignorar, por favor ver la ignore entry in the [ui] section.

tratando de convertir el .hgignore boca abajo al usar expresiones regulares de búsqueda negativa y otro vudú es (en mi opinión) no una buena idea. Es casi seguro que no funcionará y solo generará confusión. Esto se debe a que hg coincide con todos los prefijos de un nombre de ruta de entrega con respecto al rules in .hgignore. Así como un archivo

a/b/c.cs 

se tendrá en cuenta si alguno de

a/b/c.cs 
a/b 
a 

se corresponde con una regla en el archivo de .hgignore. En particular, esto significa que no puede usar una expresión de búsqueda anticipada negativa para tener a/b/c.cs no ignorado - la regla coincidirá con a/b o a.

+0

¿Entonces está diciendo que no hay operador de negación? –

+0

Mike: Sí, lamentablemente. Consulte este número en http://mercurial.selenic.com/bts/issue712 donde puede dejar un comentario si está muy interesado. –

-2

Agregue un archivo llamado .hgignore a su repositorio con estos contenidos.

syntax: regexp 

^\.cs 

Subversion no le permiten usar expresiones regulares para ignorar los archivos, sólo un subconjunto de glob syntax para que coincida con los nombres de archivo/directorio. No tenía ni idea de cómo hacer caso omiso de los archivos que no terminen en Cs así que busqué en la web y this webpage dice:

svn propset svn:ignore "*[!c][!s] 
*.cs?*" . 

usarlo con precaución :)

Edición: Martin Geisler es correcto y que estaba equivocado , la sintaxis de la expresión regular es incorrecta. Me disculpo. El concepto correcto está ahí, pero no los meta-caracteres ... :(

+0

La expresión regular '^ \. Cs' hará que' hg' ignore un archivo llamado '.cs' en el directorio raíz del repositorio. No hará que 'hg' ignore todos los archivos * no * coincidentes' * .cs' (patrón global). –

+0

sí, lo intenté, no funciona. – prime23

1

En cuanto al enlace a un tema Mercurial suministrado por Martin Geisler (https://www.mercurial-scm.org/bts/issue712), tenga en cuenta que el problema no es uno de dificultad técnica, pero el apoyo:

Se trata de una solicitud de función antigua y recurrente, que rechacé bien antes de que se creara este error. He escrito y apoyado un par de sintaxis de archivos incluidos/excluidos y he decidido preferir decir "no, usted no puede hacer eso" una vez al 1% de los usuarios que "no, está leyendo los documentos incorrectos" repetidamente al 20% de los usuarios. — Matt Mackall (desarrollador de Mercurial)

Cuestiones relacionadas