Cách Git-Bỏ qua các Liên kết trên Mô-đun Magento được cài đặt bởi nhà soạn nhạc


11

Tôi cài đặt các mô-đun bằng cách sử dụng composer.phar.

Điều này tạo ra các tệp symlink trong publichtml/app/code/community(ví dụ) với một mục tiêu đến vendor/themodule....

Trong tôi đã .gitignoreloại trừ thư mục nhà cung cấp - nhưng các liên kết tất nhiên vẫn sẽ kết thúc trong git.

Có một cách dễ dàng để tự động loại trừ các liên kết đó? (ngoài việc thêm mọi thứ thủ công vào .gitignore)

Tôi phải nói rằng tôi có một số require-devmô-đun không nên kết thúc trên máy chủ cuối cùng - vì vậy có những liên kết đó sẽ có ít nhất là không tốt.


1
Điều này cũng sẽ áp dụng cho modman chứ?
philwinkle

Với modman, bạn thường sử dụng các mô đun con git cho mỗi phần mở rộng và chỉ cần thêm các liên kết tượng trưng vào kho lưu trữ. Không cần loại trừ chúng ở đó, ngược lại, nó sẽ không có ý nghĩa trong kịch bản triển khai modman.
Vinai

1
@philwinkle Gần đây tôi đã bắt đầu theo dõi root Magento trong một repo riêng vì lý do bảo mật (ví dụ: dễ dàng phát hiện các tệp đã sửa đổi), để theo dõi các thay đổi đối với index.php và Mage.php, và để nâng cấp Magento dễ dàng hơn, chắc chắn cũng phù hợp với modman, IMO .
ColinM

Câu trả lời:


8

Điều tốt nhất tôi nghĩ ra là chạy nó sau khi cài đặt / cập nhật trình soạn thảo

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

Lệnh nên được chạy trong thư mục gốc git. Nó thêm tất cả các liên kết tượng trưng vào tệp .gitignore chưa có trong đó.


điều này tạo ra đường dẫn giống như ./foo/bar.. Tôi nghĩ rằng chúng ta phải loại bỏ cái đầu tiên .- nó có hoạt động với bạn như thế không?
Alex

Làm việc tốt cho tôi với hàng đầu ., vâng. Else sed để giải cứu:find . -type l -not -exec grep -q "{}" .gitignore \; -print | sed 's/^\.\///'
Vinai

Trên thực tế, điều đó phá vỡ grep ... tốt, có lẽ có một cách tốt để dọn sạch đường dẫn lên ...
Vinai

1
Giải pháp đơn giản : find * .... Sẽ cập nhật câu trả lời của tôi.
Vinai

3

Phương pháp này chỉ thêm các liên kết tượng trưng không được theo dõi để có thể được lặp lại mà không cần thêm các mục trùng lặp, liên kết tượng trưng trong mô hình con hoặc bị bỏ qua hoặc liên kết theo dõi có chủ ý.

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


1

Giải pháp kết hợp của @ColinM và @Vinai phù hợp với tôi

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

Bạn có nhận thấy rằng trình cài đặt trình soạn thảo gần đây tự động loại trừ các liên kết tượng trưng không?
Alex

Chắc chắn, nhưng một số dự án của tôi không thuộc quyền kiểm soát của nhà soạn nhạc. Và các giải pháp được cung cấp ở đây không chỉ cho các dự án sáng tác mà còn bỏ qua các liên kết tượng trưng hoàn toàn. Hy vọng nó sẽ giúp được ai đó
martin_mageworx 2/2/2016
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.