composer가 설치 한 Magento 모듈에서 Symlink를 무시하는 방법


11

를 사용하여 모듈을 설치합니다 composer.phar.

이렇게하면 대상이있는 심볼릭 링크 파일이 생성됩니다 publichtml/app/code/community(예 :) vendor/themodule....

내에서 .gitignoreI 공급 업체 디렉토리를 제외 -하지만 링크는 물론 여전히 자식에 끝날 것입니다.

해당 링크를 자동으로 제외 시키는 쉬운 방법이 있습니까? (.gitignore에 모든 것을 수동으로 추가하는 것 제외)

require-dev최종 서버에서 끝나서는 안되는 모듈이 있다고 말해야합니다. 링크가 있으면 적어도 그렇게 좋지 않을 것입니다.


1
이것이 modman에도 적용됩니까?
philwinkle

modman을 사용하면 일반적으로 각 확장에 git 서브 모듈을 사용하고 단순히 심볼릭 링크를 저장소에 추가합니다. 반대로 그것들을 배제 할 필요는 없지만, modman 배치 시나리오에서는 대부분 의미가 없습니다.
Vinai 2016 년

1
@philwinkle 저는 최근 보안상의 이유로 (예 : 수정 된 파일을 쉽게 검색) index.php 및 Mage.php의 변경 사항을 추적하고 Magento 업그레이드를 쉽게하기 위해 별도의 리포지토리에서 Magento 루트를 추적하기 시작했습니다. .
ColinM

답변:


8

내가 작성한 최고의 것은 작곡가 설치 / 업데이트 후에 이것을 실행하는 것이 었습니다

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

명령은 git root 디렉토리에서 실행해야합니다. 이미 존재하지 않는 모든 심볼릭 링크를 .gitignore 파일에 추가합니다.


이것은 경로와 같은 것을 생성합니다 ./foo/bar. 나는 우리가 첫 번째를 제거해야한다고 생각 .합니다.
Alex

선두와 함께 나를 위해 잘 작동합니다 .. 다른 구조에 sed :find . -type l -not -exec grep -q "{}" .gitignore \; -print | sed 's/^\.\///'
Vinai

실제로, 그것은 grep을 깰 ... 글쎄, 어쨌든 경로를 정리하는 좋은 방법이있을 수 있습니다 ...
Vinai

1
간단한 해결책 : find * .... 내 답변을 업데이트하겠습니다.
Vinai 2016 년

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

최근 작곡가 설치 관리자가 심볼릭 링크를 자동으로 제외한다는 것을 알고 계셨습니까?
Alex

물론 내 프로젝트 중 일부는 작곡가가 제어하지 않습니다. 여기에 제공된 솔루션은 작곡가 프로젝트뿐만 아니라 심볼릭 링크를 완전히 무시하기위한 것입니다. 그것은 누군가가 도움이되기를 바랍니다
martin_mageworx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.