作曲家によってインストールされたマゼントモジュールでgit-ignoreシンリンクをする方法
質問
使用してモジュールをインストールします 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 Directoryで実行する必要があります。すでにそこにない.gitignoreファイルにすべてのシンリンクを追加します。
他のヒント
このメソッドは、未舗装のシンリンクのみを追加するため、重複するエントリ、サブモジュールにある、または既に無視されている、または意図的に追跡されているシンリンクを追加せずに繰り返すことができます。
for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
test -L "$f" && echo $f >> .gitignore;
test -d "$f" && echo $f\* >> .gitignore;
done
最近では、作曲家のインストーラーにこれのためのオプションがあります。 adexto.auto-add-files-to-gitignoreを設定してください 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