So Git-Ignore-Symlinks auf einem vom Komponisten installierten Magento-Modul
Frage
Ich installiere Module mithilfe composer.phar
.
Dies erstellt Symlinks -Dateien in publichtml/app/code/community
(zum Beispiel) mit einem Ziel zu vendor/themodule...
.
In meinem .gitignore
Ich habe das Verkäuferverzeichnis ausgeschlossen - aber die Links würden natürlich immer noch im Git enden.
Ist dort ein einfach Weg, um diese Links automatisch auszuschließen? (außer alles manuell zum .gitignore hinzuzufügen)
Ich muss sagen, dass ich welche habe require-dev
Module, die nicht auf dem endgültigen Server landen sollten - also wäre es zumindest nicht so schön.
Lösung
Das Beste, was ich mir ausgedacht habe, war, dies nach einer Installation/Aktualisierung eines Komponisten auszuführen
$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
Der Befehl sollte im Git Root -Verzeichnis ausgeführt werden. Es fügt alle Symlinks zu der .gitignore -Datei hinzu, die nicht bereits da sind.
Andere Tipps
Diese Methode fügt nur nicht zusammengezogene Symlinks hinzu, kann also wiederholt werden, ohne dass doppelte Einträge, Symlinks in Submodule oder ansonsten bereits ignoriert oder absichtlich verfolgt werden.
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore;
test -d "$f" && echo $f\* >> .gitignore;
done
Heutzutage gibt es im Composer Installer eine Option hierfür. Setzen Sie einfach extra.auto-add-files-to-Gitignore https://github.com/magento-hackathon/magento-composer-installer/blob/master/readme.md#auto-add-files-t-gitignore
Die kombinierte Lösung von @colinm und @vinai, die für mich funktioniert
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