¿Hay alguna manera de seleccionar lo que quiero en hg, no ignorar lo que no quiero

Sé que la ignorancia de Hg es útil, pero ¿hay alguna manera de que pueda especificar qué files me importan y simplemente ignorar el rest, por ejemplo?

si tengo ac, ah, ao, a.exe, a.err en el repository, ¿hay alguna manera de decir Hg, solo quiero mantener *.c *.h y simplemente ignorar todo lo que no está en la list.

Heh, @vonC tiene razón, no podía dejar pasar esto. No hay forma de convertir hgignore en una list blanca en lugar de una list negra. Entiendo que es así por layout (ciertamente no lo diseñé).

Tienes pocas opciones:

  1. Agregue todo ( .* ) A su .hgignore y luego hg add file que desea que sea rastreado .* Agregar siempre ignora ignorar

  2. Solo desglosa y hg status --no-status --unknown >> .hgignore una list negra adecuada: hg status --no-status --unknown >> .hgignore es un gran punto de partida.

El resultado final es el seguimiento accidental de algo que no desea rastrear es una situación less peligrosa que olvidar accidentalmente para rastrear algo que deseaba fue rastreado. El primero crea un poco de ruido en el repository, mientras que el último da como resultado la posible pérdida de datos.

Si realmente quieres ser elegante, puedes agregar ' .* ' A tu .hgignore y luego crear un gancho como este:

 [hooks] precommit.add = hg add $(hg status --unknown --no-status -I '**.c' -I '**.h') 

que agregaría automáticamente cualquier nuevo file .c y .h cuando confirme.