Come Git-ignorare link simbolici su un modulo Magento installato dal compositore
Domanda
I installare moduli usando composer.phar
.
Questo crea file collegamenti simbolici nelle publichtml/app/code/community
(per esempio) con l'obiettivo di vendor/themodule...
.
Nel mio .gitignore
ho escluso la cartella vendor - ma i collegamenti sarebbe ovviamente ancora finire nel git
C'è un semplice modo per automically escludere quei link? (Altro che aggiungere tutto manualmente al .gitignore)
Devo dire che ho alcuni moduli require-dev
che non dovrebbe finire sul server finale -. In modo da avere quei collegamenti ci sarebbero almeno non così bello
Soluzione
Il migliore mi è venuta è stata l'esecuzione di questo dopo un compositore installare / update
$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
Il comando deve essere eseguito nella directory principale git. Aggiunge tutti i collegamenti simbolici al file .gitignore che non sono già lì.
Altri suggerimenti
Questo metodo aggiunge solo link simbolici non monitorate in modo può essere ripetuto senza l'aggiunta di voci duplicate, i link simbolici che si trovano in sottomoduli o sono comunque già ignorati, o intenzionalmente monitorati link simbolici.
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore;
test -d "$f" && echo $f\* >> .gitignore;
done
Al giorno d'oggi c'è un'opzione per questo nel programma di installazione compositore. A soli set extra.auto-add-files-to-gitignore https://github.com/magento-hackathon/magento-composer-installer/blob/master/README.md#auto-add-files-to-gitignore
La soluzione combinata di @ColinM e @Vinai che funziona per me
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