2011-06-27 15 views
6

Tôi đã tạo một khung công tác ánh sáng cá nhân trong PHP phù hợp với nhu cầu của tôi cho một khung công tác. Tôi đang sử dụng các thư viện của bên thứ 3 khác nhau, như SwiftMailer, Twig, Assetic, Facebook PHP api, ...Làm cách nào để quản lý kho lưu trữ git người thứ 3 trong dự án của bạn? (ví dụ: Twig/Assetic/..)

Làm cách nào để quản lý các mã nguồn này từ thư viện của bên thứ ba? Bạn có thêm nó dưới dạng mô-đun con vào dự án của bạn không, và chỉ cần kéo để lấy phiên bản mới nhất? Hoặc bạn chỉ cần sao chép mã vào thư mục dự án của bạn và tự mình cập nhật?

Hầu hết các kho mã được cấu trúc như thế này:

  • docs
  • src
  • kiểm tra

Vì vậy, trong dir khuôn khổ của tôi nó trông như thế này, và chúng ta dirs nhà cung cấp như submodule từ một dự án từ xa:

  • tài liệu
  • src
    • nhà cung cấp
      • Assetic (clone của repo từ xa)
      • src
      • ...
  • kiểm tra

Đây có phải là các đường đi? Hoặc làm thế nào để bạn đề nghị làm điều này? Trong quá trình triển khai capistrano, tất cả các kho lưu trữ submodule sẽ được lấy từ các máy chủ từ xa.

Chỉnh sửa: Tôi phải nói rằng tôi sử dụng khung làm mô-đun con trong các dự án khác. Vì vậy, khuôn khổ là một mô-đun con trong một dự án, và chính khuôn khổ đó cũng có các mô-đun con trong nó ..

Cảm ơn!

Trả lời

0

Tôi quản lý mọi dự án tách biệt. Mỗi thư mục dự án có thể chứa tất cả các tệp để xây dựng chính xác - vì vậy tất cả các tệp tham chiếu được bao gồm trong thư mục "refs". Trong trường hợp này là xây dựng dễ dàng: nhận phiên bản mới nhất của thư mục "src, refs & xây dựng", hãy chạy tập lệnh xây dựng. Đầu ra nằm trong thư mục "bin".

Thư mục "refs" đang tiêu thụ kích thước đĩa, nhưng đơn giản nhất là quản lý các tham chiếu chéo dự án với các phiên bản sửa (và các nhánh).& nguồn

  • refs // mã nhị phân được tham chiếu trong phiên bản đúng
  • build

    • 3rdParty-Project-A
    • 3rdParty-Project-B
      • src đang // nguồn // xây dựng kịch bản
      • bin // các tệp nhị phân được xây dựng & các tệp có liên quan
      • triển khai // tệp được sử dụng cho deplo y (setup.exe, setup.msi, vv ...)
      • ... các thư mục khác ...
    • MyProject-A
    • MyProject-B
      • src
      • refs file
        • 3rdParty-Project-B // có được tham chiếu từ 3rdParty-Project-B
        • MyProject-A // có được tham chiếu tập tin từ MyProject-A
        • 01.
      • build
      • bin
      • triển khai
  • 1

    Tôi thường sử dụng một vendor thư mục, hoặc là top-level hoặc dưới src hoặc lib chứa submodules, và sử dụng các tùy chọn --recurse-submodules khi kéo và --recursive với git submodule updategit submodule status. Tôi nghĩ rằng capistrano có thể xử lý trường hợp sử dụng này một cách rõ ràng, nhưng tôi không đủ quen thuộc với nó để biết chắc chắn.