2012-03-17 20 views
5

Tôi đang làm việc với symfony2 một thời gian và tôi không thực sự có được cách làm việc chính xác với các nhà cung cấp.Hiểu symfony2 dep

Vì vậy, đây là những gì tôi đang làm:

Tôi có DEPS và deps.lock tập tin trong git của tôi trong khi tôi bỏ qua toàn bộ các nhà cung cấp thư mục. Bây giờ khi tôi cài đặt ứng dụng vào một máy chủ mới, tôi thực hiện một số php bin/vendors install để kéo các nhà cung cấp lên máy chủ. Tôi nhận được thông báo rằng tôi phải sử dụng install --reinstall và làm điều đó.

Từ sự hiểu biết của tôi, các phiên bản bây giờ sẽ giống hệt như trên máy phát triển của tôi, vì cả deps và deps.lock đều giống nhau. Nhưng có vẻ như deps.lock bị (một phần) bị bỏ qua?

Ngoài ra còn có một lệnh vendors update, mà tôi đọc không nên được sử dụng. Tôi không hiểu ý tưởng của nó.

Vì vậy, tôi hơi bối rối ngay bây giờ khi sử dụng lệnh nào và khi nào cần làm gì. Có lẽ ai đó có thể làm sáng tỏ chủ đề này! Tôi đặc biệt quan tâm đến cách chính xác để sử dụng lệnh của nhà cung cấp cả cục bộ lẫn trên máy chủ để các nhà cung cấp có phiên bản chính xác trên cả hai hệ thống!

+0

Có liên quan đến câu hỏi của bạn - Tôi khuyên bạn nên xem [capifony] (http://capifony.org) bao gồm một cách quản lý triển khai tốt với nhiều máy khác nhau trong khi quản lý 'deps'. – leek

+0

Tôi đã cố gắng capyfony nhưng phải trung thực nó chỉ không làm việc cho tôi. Tôi không thích cách nó quản lý mọi thứ và có một luồng công việc triển khai khác bằng git. – Sgoettschkes

Trả lời

4

cài đặt và cập nhật cả hai lấy mã mới từ các kho git quy định trong hồ sơ của bạn DEPS

cài đặt kiểm tra cho băm trong bạn deps.lock file cho mỗi thư viện. Nếu nó tìm thấy một cái gì đó, nó kiểm tra các cam kết tương ứng với băm. Nếu không, nó sẽ kiểm tra thẻ hoặc nhánh trong deps.lock của bạn nếu một thẻ được chỉ định và tạo một mục trong tệp deps.lock

Cập nhật rất hữu ích khi bạn muốn cập nhật lên phiên bản mới của symfony (hoặc bất kỳ thư viện nào trong tệp deps). Nếu bạn một ngày, bạn cảm thấy như đang cập nhật, bạn có thể đọc this post I wrote about the update process.

Để tổng hợp, tôi luôn sử dụng cập nhật trên tất cả các máy và cố gắng luôn luôn chỉ định phiên bản cho mỗi thư viện để môi trường sản xuất không được cập nhật lên phiên bản không ổn định bất ngờ.

0

có bạn tải về phiên bản tiêu chuẩn mà đã có chứa các nhà cung cấp, đó là lý do tại sao nó hiển thị thông báo này để sử dụng "cài đặt - cài đặt lại"

Cá nhân tôi đã ​​php bin/install-reinstall các nhà cung cấp trong dự án deployement

+0

Không, luôn sử dụng phiên bản không có nhà cung cấp. Các nhà cung cấp cũng không được thêm vào kho git của tôi và khi tôi kiểm tra trên máy chủ của tôi, ở đó cũng không có thư mục nhà cung cấp nào có mặt. – Sgoettschkes

4

install --reinstall là như nhau là install nhưng nó cũng xóa nội dung thư mục của nhà cung cấp trước khi cài đặt.

vendors update cập nhật tất cả nhà cung cấp của bạn lên phiên bản hoặc phiên bản mới nhất được chỉ định trong tệp deps và cập nhật tệp deps.lock của bạn. Nhưng bạn hiếm khi cần nó, không biết nơi bạn đọc "không nên được sử dụng".

Nếu bạn nhìn vào bên trong tập tin các nhà cung cấp, bạn có thể nhìn thấy dòng này:

if (is_dir($vendorDir.'/symfony') && !is_dir($vendorDir.'/symfony/.git') && !in_array('--reinstall', $argv)) 
...Try to run ./bin/vendors install --reinstall... 

Vì vậy, bạn có thư mục vendor/symfony không .git trong đó.

+1

+1, tôi nghĩ câu "không nên sử dụng" được đọc ở đây: http://symfony.com/doc/current/cookbook/workflow/new_project_git.html#cookbook-managing-vendor-libraries nhưng nó có nghĩa là một cái gì đó như: "bạn sẽ không cần nó" – greg0ire