Tùy chọn github-protocols
chỉ hoạt động với GitHub, nhưng có một cách khác để giải quyết sự cố không phụ thuộc vào việc sử dụng GitHub cho máy chủ Git của bạn.
Bạn chỉ cần cho Composer sử dụng một URL khác, giống như cách bạn đã chia gói và bạn muốn đảm bảo Composer đã sử dụng ngã ba thay vì gói mặc định.
Dưới đây là một ví dụ mà tôi sử dụng nĩa của riêng mình cho một gói, và tôi buộc các giao thức trong URL để http
thay vì git
thêm:
"repositories": [{
"type": "vcs",
"url": "https://github.com/brandondrew/laravel4-PHPExcel"
},{
"type": "vcs",
"url": "http://git.code.sf.net/p/tcpdf/code"
}],
Trong trường hợp của Laravel4-PHPExcel, tôi đã có cố định một lỗi sớm, và cần sửa chữa của tôi trong khi tôi đợi người duy trì chấp nhận yêu cầu kéo của tôi. (Ngoài ra, anh ta đã thực hiện một số cải tiến mã tấn của mình, vì vậy tôi bỏ việc sử dụng ngã ba của mình, nhưng tôi hiển thị nó ở đây vì nó hữu ích làm ví dụ, ngay cả khi mã của tôi không Trong trường hợp của TCPDF, chúng là gói duy nhất mà ứng dụng của tôi sử dụng chỉ định giao thức Git, vì vậy nó có vẻ vô lý để cầu xin và cầu xin với đội bảo mật tại vị trí khách hàng của tôi để mở ra cổng 9418 khi tôi chỉ có thể sử dụng HTTP thay vào đó, mà (theo ý kiến của tôi) họ nên đã sử dụng để bắt đầu với. Tất cả những gì tôi đã thay đổi trong URL là thay thế git
bằng http
, nhưng nó hoạt động giống như bất kỳ URL nào do người dùng chỉ định khác, cho phép bạn chỉ định URL mà Composer sử dụng cho một gói nhất định.
CẬP NHẬT:
Chỉ vì lợi ích của việc hoàn thành, tôi cảm thấy tôi nên đề cập đến rằng bạn cũng có thể giải quyết vấn đề ở cấp Git là tốt. Trong trường hợp ứng dụng mà tôi gặp phải vấn đề này, tôi cảm thấy rằng việc thực hiện nó trong Composer phù hợp hơn, nhưng tình huống của bạn có thể khác nhau và bạn có thể xem cách tiếp cận tốt nhất cho tình huống là gì.
Cách tiếp cận Git có thể được thực hiện nhiều hơn toàn cầu, mà bạn có thể thấy là một lợi thế (hay không).Các trường hợp đơn giản là nói với Git để thay thế một URL cho người khác:
git config --global url."http://git.code.sf.net/p/tcpdf/code".insteadOf "git://git.code.sf.net/p/tcpdf/code"
Nhưng bạn cũng có thể cho Git để luôn luôn thay thế 'git: //' với 'https: //':
git config --global url."https://".insteadOf "git://"
Trong các ví dụ, tôi đặt nó vào tập tin cấu hình chung của người dùng, nhưng bạn có thể thay thế --global
bằng --local
để đặt nó vào tập tin cấu hình của kho lưu trữ (hoặc --system
để đặt nó vào tập tin cấu hình của hệ thống).
Trên Zend Framework 2 lệnh này là 'php composer.phar config --global github-protocol https' – KalenGi
@KalenGi: Cũng giống như vậy, nhưng bạn đang sử dụng một tệp' composer' được cài đặt cục bộ với '. Đã thêm tiện ích mở rộng phar'. – iconoclast
@Seldaek: điều này có hiệu quả đối với các trang web không phải GitHub không? Ví dụ: git.code.sf.net? – iconoclast