Comment Git-Ignorer les liens symboliques sur un module Magento installé par le compositeur
Question
J'installer des modules à l'aide composer.phar
.
Cela crée des fichiers liens symboliques dans publichtml/app/code/community
(par exemple) avec une cible à vendor/themodule...
.
Dans mon .gitignore
j'exclu le répertoire des fournisseurs - mais les liens serait bien sûr encore jusqu'à la fin dans le git
Y at-il un facile façon d'exclure automically ces liens? (Autre que l'ajout de tout manuellement à la .gitignore)
Je dois dire que j'ai quelques modules de require-dev
qui ne devrait pas se retrouver sur le serveur final -. Afin d'avoir ces liens il y aurait au moins pas si gentil
La solution
Le meilleur que je suis venu avec était en cours d'exécution après ce compositeur d'installation / mise à jour
$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
La commande doit être exécutée dans le répertoire racine git. Il ajoute tous les liens symboliques dans le fichier .gitignore qui ne sont pas déjà là.
Autres conseils
Cette méthode ne fait qu'ajouter des liens symboliques trassez peut donc être répétée sans ajouter les doublons, les liens symboliques qui sont ou qui sont sous-modules déjà ignorés, ou intentionnellement objet d'un suivi des liens symboliques.
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore;
test -d "$f" && echo $f\* >> .gitignore;
done
Aujourd'hui, il y a une option pour cela dans le programme d'installation du compositeur. Il suffit de définir extra.auto-add-fichiers-à-gitignore https://github.com/magento-hackathon/magento-composer-installer/blob/master/README.md#auto-add-files-to-gitignore
La solution combinée de @ColinM et @Vinai qui fonctionne pour moi
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