composerによってインストールされたMagentoモジュールのシンボリックリンクを無視する方法


11

を使用してモジュールをインストールしますcomposer.phar

これによりpublichtml/app/code/community、たとえばをターゲットとするシンボリックリンクファイルが作成されvendor/themodule...ます。

.gitignoreはベンダーディレクトリを除外しましたが、リンクはもちろんgitに残ります。

それらのリンクを自動的に除外する簡単な方法はありますか?(すべてを手動で.gitignoreに追加する以外)

私はrequire-dev最終的なサーバーで終わるべきではないいくつかのモジュールを持っていると言わなければなりません-したがって、それらのリンクがあることは少なくともそれほど良くないでしょう。


1
これはmodmanにも当てはまりますか?
philwinkle 2013年

modmanを使用すると、通常、各拡張機能にgitサブモジュールを使用し、シンボリックリンクをリポジトリに追加するだけです。それらをそこに除外する必要はありません。逆に、modmanのデプロイシナリオではほとんど意味がありません。
ビナイ

1
@philwinkle最近、セキュリティ上の理由(変更されたファイルを簡単に検出するなど)、index.phpとMage.phpの変更を追跡するため、およびmodmanにも確実に関連するMagentoのアップグレードを容易にするために、別のリポジトリでMagentoルートの追跡を開始しました。IMO 。
ColinM 2014

回答:


8

私が思いついた最高のものは、作曲家のインストール/更新後にこれを実行することでした

$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore

コマンドはgitルートディレクトリで実行する必要があります。まだそこにないすべてのシンボリックリンクを.gitignoreファイルに追加します。


これは次のようなパスを生成します./foo/bar..最初のものを削除する必要があると思います.-そのように機能しましたか?
Alex

.はい、私はリーディングでうまく機能します。それ以外の場合は救助に出た:find . -type l -not -exec grep -q "{}" .gitignore \; -print | sed 's/^\.\///'
ビナイ

実際、それはgrepを壊します...まあ、とにかくパスをクリーンアップする良い方法があるかもしれません...
Vinai

1
シンプルなソリューション:find * ...。私の答えを更新します。
ビナイ

3

このメソッドは追跡されていないシンボリックリンクのみを追加するため、重複したエントリ、サブモジュール内にある、またはすでに無視されているシンボリックリンク、または意図的に追跡されたシンボリックリンクを追加せずに繰り返すことができます。

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
    test -L "$f" && echo $f >> .gitignore;
    test -d "$f" && echo $f\* >> .gitignore;
done


1

@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

最近のComposerインストーラーがシンボリックリンクを自動的に除外することに気づきましたか?
アレックス

もちろん、私のプロジェクトの一部は作曲家の管理下にありません。そして、ここで提供されるソリューションは、作曲家プロジェクトだけでなく、シンボリックリンクを完全に無視するためのものです。誰かのお
役に立てば幸い
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.