2010-07-03 36 views
7

Tôi có một số dự án xây dựng thư viện có thể sử dụng lại. Tất cả các dự án này đều nằm dưới sự kiểm soát nguồn.Sử dụng thư viện được kiểm soát nguồn trong các dự án được kiểm soát nguồn

Khi tôi sử dụng các thư viện này trong một dự án, tôi chỉ liên kết với cùng một phiên bản trên ổ đĩa cục bộ của mình. Tuy nhiên như bạn có thể tưởng tượng, điều này có thể gây ra vấn đề khi tôi cam kết, và một nhà phát triển khác nhau cố gắng sao chép kho lưu trữ.

Cách thực hành tốt nhất khi sử dụng các thành phần cũng nằm dưới sự kiểm soát nguồn là gì? Tôi có nên bao gồm "dự án thư viện" trong điều khiển nguồn "dự án chính" không? Điều này có gây ra vấn đề không?

NB: Các thư viện có một vài chỉ thị trình biên dịch nên hầu như không thể biên dịch phiên bản tĩnh và liên kết đến đó. Cộng với tôi vẫn đang phát triển chúng song song.

Trả lời

5

Bạn có hai loại chính phụ thuộc:

  • nguồn phụ thuộc (bạn cần bao gồm, trong nguồn dự án của bạn, nguồn từ một dự án khác) ,
  • phụ thuộc nhị phân (bạn cần bao gồm bộ tệp được đóng gói, như các tệp được tìm thấy trong thư viện được chia sẻ).

Nếu, khi bạn nói "Tôi sử dụng các thư viện này trong dự án", bạn có nghĩa là bạn cần các tệp nhị phân để dự án biên dịch, sau đó bạn có thể lưu trữ các tệp nhị phân đó trong kho lưu trữ bên ngoài. D) VCS như Mercurial, nhưng artifact repository like Nexus)

Nhưng nếu bạn muốn bao gồm các nguồn, vì bạn cũng đang thực hiện một số diễn biến cho các thư viện đó trong khi sử dụng chúng để phát triển dự án của mình, thì Mercurial subrepos phù hợp hơn.

0

Theo kinh nghiệm của riêng tôi, việc duy trì tính tương thích với thư viện bạn đang viết đồng thời được cải thiện đáng kể bằng cách sử dụng bản đồ xuất để cung cấp nhiều phiên bản giao diện cho chương trình khách. Hướng dẫn tốt nhất mà tôi biết là Ulrich Drepper của http://people.redhat.com/drepper/dsohowto.pdf

0

Nếu các thư viện nằm dưới sự kiểm soát nguồn của bạn, cuộc sống phải dễ dàng. Những gì tôi có xu hướng làm là giống như tôi làm cho các phiên bản khác nhau của thư viện của bên thứ ba: Có các thư mục khác nhau cho các phiên bản khác nhau.

Thứ ba thư viện của bên cấu trúc thư mục trông như thế này:

- General 
    - Delphi 
    - Components 
     - LibX 
     - LibX 9.2.1.3890 
     - LibX 10.1.0.7151 
     - LibY 
     - LibY 3.6 
     - LibY 5.1 
    - Plugins 

Mỗi dự án định nghĩa nó phụ thuộc vào phiên bản cụ thể của từng thư viện. Hoàn nguyên về phiên bản cũ của một dự án, do đó cũng sẽ chuyển đổi sự phụ thuộc vào các phiên bản cũ của thư viện.

Giờ đây với thư viện của bên thứ ba, bạn thường không có nhiều phiên bản khác nhau như bạn có thể làm với thư viện của riêng mình, nhưng các hiệu trưởng tương tự sẽ được áp dụng. Và để hỗ trợ trong "phát triển hiện tại" - nơi bạn chưa có số phiên bản cụ thể, bạn có thể chỉ cần có phiên bản "đầu". Sau đó, khi bạn "phát hành" phiên bản thư viện của mình, chỉ cần thêm thư mục của phiên bản đó và điều chỉnh các định nghĩa dự án cho đến khi biết sử dụng "đầu" do phát triển song song, tùy thuộc vào số phiên bản mới ...

Các vấn đề liên quan