2010-08-18 28 views
10

¿Es posible decirle a Git que ignore los enlaces simbólicos? Estoy trabajando con un entorno mixto Linux/Windows y, como saben, los enlaces simbólicos se manejan de manera muy diferente entre los dos.Ignorar enlaces simbólicos en .gitignore

+3

¿A qué se refiere exactamente por ignorar? Simplemente puede agregar los enlaces simbólicos a su .gitignore si eso es lo que desea. –

+0

Sí, pero si acaba de agregar los nombres de los archivos, también ignoraría los archivos que están vinculados simbólicamente ... aunque supongo que podría especificar las rutas completas. Esperaba algo que pudiera guardar en un archivo de configuración ... – Andrei

+3

Creo que la mejor opción es generar la lista con un 'find * -type l'. – Cascabel

Respuesta

1

versión Uso git> = 1,6

Git usa para tratar SYM-enlaces iguales a los archivos regulares, pero las versiones Git más nuevos (> = 1.6) comprobar si un archivo está más allá de un enlace simbólico y tirará un error fatal

ej .:

# git init 
# mkdir newdir 
# touch newdir/foo 
# git add newdir/foo 
# git commit -m 'add foo' 
# mv newdir /tmp/ 
# ln -s /tmp/newdir 
# touch newdir/bar 
# git add newdir/bar 
fatal: 'newdir/bar' is beyond a symbolic link 

# git add/tmp/newdir 
fatal: '/tmp/newdir' is outside repository 

# git --version 
git version 1.7.3.4 
+2

git 1.7.9.5 agrega enlaces simbólicos muy bien, incluso cuando apuntan a algo fuera del repositorio ... – Izkata

1

No, no es posible hacer esto a nivel mundial. Sin embargo, si tiene muchos enlaces simbólicos aquí, hay un script bash que puede usar para agregarlos fácilmente al archivo .gitignore de su repositorio:

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do 
    test -L "$f" && echo $f >> .gitignore; # add symlinks 
    test -d "$f" && echo $f\* >> .gitignore; # add new directories as well 
done 
+0

¡Solución increíble! Funciona muy bien :) ¡Muchas gracias! –

Cuestiones relacionadas