作曲家によってインストールされたマゼントモジュールでgit-ignoreシンリンクをする方法

magento.stackexchange https://magento.stackexchange.com/questions/4641

  •  16-10-2019
  •  | 
  •  

質問

使用してモジュールをインストールします 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
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top