¿Ubicación diferente para el repository mercurial y la carpeta del proyecto?

Soy nuevo en Mercurial, trabajé con SVN anteriormente, pero ahora instalé Mercurial como un sistema de control de versiones local. Ahora lo que quiero lograr es tener mi carpeta de proyecto IDE, por ejemplo, C:\Projects\ y mi repo de Mercurial en C:\Repo\ . Lo que pasa es que solo quiero mantener los files .cpp y .h en mi Repo y el rest, incluidos los files fuente en la carpeta de proyectos. ¿Es posible tener algo como esto?

¡Gracias!

Respuesta corta: para eso son los files .hgignore y hg pull . De hecho, la fácil distribución de los files controlados por la versión (y solo esos files) a otros es el punto central de Mercurial.

No puede tener su repository en otro lugar que no sea donde está su carpeta de trabajo, sin hacer una copy o vinculación muy arriesgada (que es difícil de hacer, de todos modos, en un sistema Windows).

En su lugar, use un file .hgignore para excluir algunos files del repository y hg pull para que las actualizaciones estén disponibles.

Pasos:

  1. Utilice .hgignore con una syntax de expresiones regulares para ignorar todo lo que no .cpp files .cpp y .h , como este:
 # regexp syntax. syntax: regexp \.(?!cpp|h)[^.]+$ 

Esa expresión regular ignora todo lo que tenga una terminación .whatever que no sea .cpp o .h .

  1. Luego, cada vez que su colega necesite el repository, puede hacer una hg pull para get exactamente lo que está en el repository y nada más.

Incluso si no puede hacer una hg pull remota de hg pull por algún motivo, puede hacer una extracción local o clonar (es decir, a su propio disco duro), luego comprimir el nuevo directory y enviárselo. Solo includeá los files controlados por la versión, no cualquier otra cosa que pueda tener en su directory de trabajo (como files .project ). Sin embargo, tenga en count que hg está realmente destinado a ser utilizado en un context de networking.

  1. No puede tener un repository en ningún otro lugar, que la carpeta .hg dentro de su directory de trabajo
  2. Puede agregar al control de versiones solo una parte (es decir, solo es necesario) de files existentes en su tree