2009-12-25 28 views
25

A partir de 0.9.4, al agregar un enlace simbólico Mercurial realiza un seguimiento del enlace en sí, y no del archivo o directorios al que apunta. Sin embargo, hay casos en los que es conveniente realizar un seguimiento de los archivos señalados por el enlace simbólico.¿Cómo tratar un enlace simbólico como un directorio en Mercurial?

¿Cómo puedo forzar a Mercurial a tratar el enlace simbólico a un directorio como un directorio normal?

+3

¿Has intentado con fuerza en lugar de enlaces suaves? – miku

+1

Estoy en una Mac, y no puedo obtener 'ln' para producir enlaces duros. Se queja de que el objetivo es un directorio. – dzhelil

+2

De 'ls (1)' en mi máquina Linux: '-d',' -F', '--directory': permite que el superusuario intente enlazar directorios (nota: probablemente fallará debido a restricciones del sistema, incluso para el superusuario). –

Respuesta

24

bajo Linux puede utilizar

mount --bind sourcepath targetpath 

en lugar de enlaces simbólicos y mercurial tratará de destino como de costumbre directorio (probado en openSUSE 11.2 con Mercurial 1.3.1, y en RHEL6).

La sintaxis alternativa, susceptibles de inclusión en /etc/fstab, es

mount -o bind sourcepath targetpath 

La entrada fstab es, entonces

sourcepath targetpath none defaults,bind 0 0 
+0

He confirmado que sudo mount --bind sourcepath targetpath recomendado por Rage Steel me funciona en Linux (Ubuntu 10.04 con Mercurial 1.4.3). – pvillela

+0

¿Algún truco para los usuarios de OS X? – stigi

5

No creo que haya una manera de hacerlo cuando trabajas con directorios.

Si está trabajando con mercurial 1.3 o posterior, puede intentar usar el nuevo soporte de subrepo, que le permitirá tener un repo track en su disco local, pero no es tan transparente como un enlace estado.

5

Me sorprendió cuando encontré esto también, pero parece ser una característica que el Mercurial team don't want to change for security reasons.

Estoy planeando resolverlo usando rsync para actualizar la copia local del directorio antes de confirmarlo, desde mi archivo MAKE. Esta no es una gran solución, pero mi directorio es bastante pequeño, así que debería estar bien.

2

Sólo un seguimiento de respuesta excelente rabia de acero (montar --bind) :

Para que su montura esté lista en el arranque (ya que las monturas no sobreviven al reinicio), en su/etc/fstabs ponga:

/paht/a/fuente/ruta/a/de destino por defecto bind, bind 0 0

Sólo asegúrese de ponerlo después se monta su fuente.

Cuestiones relacionadas