Как получить символики Git-Ignore на модуле Magento, установленном композитором
Вопрос
Я устанавливаю модули с помощью composer.phar
.
Это создает файлы Symlinks в publichtml/app/code/community
(например) с целью vendor/themodule...
.
В моем .gitignore
Я исключил каталог поставщиков - но ссылки, конечно, все равно окажутся в GIT.
Есть легкий способ автоматически исключить эти ссылки? (кроме добавления всего вручную в .gitignore)
Я должен сказать, что у меня есть некоторые require-dev
Модули, которые не должны оказаться на конечном сервере, поэтому наличие этих ссылок, по крайней мере, не так приятно.
Решение
Лучшее, что я придумал, это запустило это после установки/обновления композитора
$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
Команда должна выполняться в каталоге GIT ROOT. Это добавляет все символики в файл .gitignore, которого еще нет.
Другие советы
Этот метод добавляет только не отрыванные символики, поэтому можно повторить без добавления дубликатов записей, символических ссылок, которые находятся в подмодулях или иным образом уже игнорируются, или намеренно отслеживаемые символики.
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore;
test -d "$f" && echo $f\* >> .gitignore;
done
В настоящее время есть вариант для этого в установщике Composer. Просто установите дополнительные https://github.com/magento-hackathon/magento-composer-installer/blob/master/readme.md#auto-add-files-to-gitignore
Комбинированное решение @colinm и @vinai, которое работает для меня
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