¿Cómo dejar que Mercurial ignore todo excepto el file * .cs?

Comencé un proyecto y lo agregué a Mercurial. Pero quiero tomar el file *.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 Hg solo monitoree cierto tipo de file como la list blanca? ¿Cómo hacer eso en Subversion?

Simplemente agregue las extensiones a su file .hgignore medida que las encuentre:

 syntax: glob *.bin *.obj 

y así. No es mucho trabajo, y documenta para el rest del mundo exactamente qué tipo de files considera que no son importantes para el control de revisiones.

Incluso puede configurar un file global de ignorar, vea la input de ignore en la sección [ui] .

Tratar de cambiar el .hgignore al revés utilizando expresiones regulares negativas y otros vudú es (en mi opinión) no es 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 dado en comparación con las reglas en .hgignore . Entonces un file como

 a/b/c.cs 

será ignorado si alguno de

 a/b/c.cs a/b a 

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

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

Esta es una request de function antigua y recurrente, que rechacé antes de que se creara este error. He escrito y apoyado un par de syntax de files de inclusión / exclusión y he decidido preferir decir "no, no se puede hacer eso" una vez al 1% de los usuarios que "no, estás leyendo los documentos incorrectos" repetidamente 20% de los usuarios. -Matt Mackall (desarrollador de Mercurial)

Agregue un file llamado .hgignore a su repository con estos contenidos.

 syntax: regexp ^\.cs 

Subversion no le permite usar regex para ignorar files, solo un subset de la syntax de glob para que coincida con los nombres de files / directorys. No tenía idea de cómo ignorar los files que no terminaban en .cs, así que busqué en la web y esta página web dice:

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

Úselo con precaución 🙂

Editar: Martin Geisler tiene razón y me equivoqué, la syntax de la expresión regular es incorrecta. Me disculpo. El concepto correcto está allí pero no en los metacaracteres … 🙁