Cómo Git-Ignorar enlaces simbólicos en un módulo Magento instalado por el compositor

magento.stackexchange https://magento.stackexchange.com/questions/4641

  •  16-10-2019
  •  | 
  •  

Pregunta

instalar módulos usando composer.phar.

Esto crea enlaces simbólicos en los archivos publichtml/app/code/community (por ejemplo) con el objetivo de vendor/themodule....

En mi .gitignore que excluye el directorio de proveedores - pero los enlaces sería, por supuesto, aún así terminar en el GIT

.

¿Hay un fácil manera de automically excluyen esos enlaces? (Aparte de la adición de todo manualmente a la .gitignore)

Tengo que decir que tengo algunos módulos require-dev que no debe terminar en el servidor final -. Por lo que tener esos enlaces que habría por lo menos no tan agradable

¿Fue útil?

Solución

Lo mejor que se me ocurrió fue correr esto después de un compositor instalar / actualizar

$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore

El comando se debe ejecutar en el directorio raíz git. Añade todos los enlaces simbólicos en el archivo .gitignore que no están en allí ya.

Otros consejos

Este método sólo añade enlaces simbólicos sin seguimiento lo que puede ser repetidas sin añadir entradas duplicadas, enlaces simbólicos que están en submódulos o son de otra manera ya ignorados, o intencionalmente rastreados enlaces simbólicos.

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
    test -L "$f" && echo $f >> .gitignore;
    test -d "$f" && echo $f\* >> .gitignore;
done

Hoy en día hay una opción para esto en el instalador compositor. Sólo hay que establecer extra.auto-add-archivos-a-gitignore https://github.com/magento-hackathon/magento-composer-installer/blob/master/README.md#auto-add-files-to-gitignore

La solución combinada de @ColinM y @Vinai que funciona para mí

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
    if test -L "$f"
    then
        test -L "$f" && echo $f >> .gitignore;
    elif test -d "$f"
    then
        find ${f%/} -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
    fi
done
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top