2009-02-12 32 views
24

Cài đặt các thành phần của bên thứ ba luôn mất nhiều thời gian đặc biệt nếu bạn có các thành phần lớn, nhưng cũng phải mất nhiều thời gian hơn nếu bạn thiết lập môi trường trên nhiều máy tính.Làm thế nào để bạn quản lý các dự án Delphi của bạn với các thành phần của bên thứ ba trong Kiểm soát phiên bản?

Và tôi đang suy nghĩ để thêm chúng vào Kiểm soát phiên bản (Subversion), vì vậy nó sẽ luôn luôn dễ dàng để kiểm tra dự án với tất cả các thành phần cần thiết.

Vậy cách bạn quản lý điều đó và cách thực hành tốt nhất để quản lý chúng bên trong VCS là gì?

Ngoài ra, hãy xem xét một số trong các bên thứ ba này không có nguồn mà là thư viện Delphi. (BPL).

Trả lời

13

Nếu chúng tôi có nguồn, thì chúng tôi sẽ bao gồm nguồn đó trong kho lưu trữ của mình, trong một thư mục riêng biệt.

Nếu chúng tôi không có nguồn, thì chúng tôi chỉ giữ các tệp nhị phân gần đây nhất (bpl, dll, bất kỳ thứ gì) trong kho và bao gồm hướng dẫn cài đặt/sử dụng trong tài liệu thiết lập.

Nó trông như thế này:

\root 
    \third_party_stuff 
     \vendor1 --we *do* have the source for this 
      \src 
      \bin 
     \vendor2 --we *do* have the source for this 
      \src 
      \bin 
     \vendor3 --we don't have the source for this one 
      \bin 
    \our_stuff 
     \project1 
      \src 
      \bin 
     \project2 
      \src 
      \bin 
+0

@Joseph, làm thế nào để bạn xử lý các phiên bản khác nhau từ các nhà cung cấp bên thứ ba? Project1 có thể đang sử dụng versionX của vendor1 trong khi project2 đã chuyển sang phiên bảnY của vendor1. –

+0

@Lieven: bạn có thể có các phiên bản cạnh nhau (các thư mục như component_version) hoặc có thư mục trên mỗi dự án (cách tiếp cận ưa thích của tôi) – Rytmis

+0

Nếu chúng tôi nâng cấp lên phiên bản mới hơn của một thành phần, chúng tôi thường đặt phiên bản mới cùng với thư mục cũ hơn, như trong gợi ý đầu tiên của Rytmis. – JosephStyons

11

Với Subversion, tôi sử dụng các tính năng externals. Nó giúp bạn dễ dàng sử dụng nội dung của bên thứ ba trong nhiều dự án; khi bạn kiểm tra một dự án, bạn cũng sẽ nhận được các phụ thuộc bên ngoài.

Nếu bạn chưa có, bạn sẽ nhận được bản sao Kiểm soát phiên bản thực dụng bằng Subversion. Đó là một cuốn sách tuyệt vời về chức năng Subversion và cách thực hiện. Trong khi nó tham chiếu SVN từ dòng lệnh, thông tin cũng dễ dàng dịch sang GUI trong TortoiseSVN.

Để cài đặt lại các thành phần vào Delphi cho các dự án cũ, tôi thường xuất các mục đăng ký cho bất kỳ phiên bản Delphi nào được sử dụng vào thư mục của dự án và sau đó kiểm tra tệp .REG đó vào Subversion cùng với dự án. Bạn có thể dễ dàng kiểm tra dự án, xuất phần đăng ký Delphi hiện tại của bạn cho phiên bản tương ứng của Delphi, nhập tệp .REG từ thư mục nguồn dự án của bạn, và sau đó bắt đầu Delphi với tất cả các thành phần được cài đặt.

Theo như vấn đề "BPL nhị phân", hãy xấu hổ với bạn! Nếu bạn có dự án tùy thuộc vào công cụ của bên thứ ba, bạn nên mua nguồn cho chúng. Bằng cách đó, bạn được bảo vệ chống lại công ty đó ra khỏi kinh doanh, hoặc giảm hỗ trợ cho các thành phần, hoặc bản phát hành mới của Delphi không tương thích. Tôi luôn luôn lấy nguồn cho các thành phần của bên thứ ba; nếu nguồn không có sẵn, tôi tìm thấy một sản phẩm khác hoặc tự viết mã. Nó được gọi là tự bảo quản. :-)

+0

Điểm thú vị về mã nguồn của bên thứ ba! – onnodb

1

Tôi đồng ý với Ken Trắng về vấn đề này: delphi thành phần của bên thứ 3 được sử dụng trong mã sản xuất

phải có mã nguồn Thời gian

. Bản phân phối chỉ nhị phân được biên dịch chỉ dành cho mục đích đánh giá CHỈ. Đó là chính sách của chúng tôi ở đây.

Đối với câu hỏi: Tôi thực sự không đặt chúng trên VCS. Trên thực tế tôi sử dụng phiên bản mới nhất mà các dự án của tôi biên dịch và hoạt động. Sự lộn xộn với đường dẫn hệ thống, tìm kiếm, thư viện, v.v ... không đáng giá. 2 JVCL trên cùng một máy hoặc comimg qua lại các phiên bản của bất kỳ dự án mới nào? ARRRRGH.

Nếu tôi phải sử dụng phiên bản cũ cho hệ thống bảo trì, hãy thả một máy ảo mới và cài đặt phiên bản mới nhất. Nó hoạt động? Được. Không phải? Nó ở trên máy ảo cho đến khi tôi phát hiện ra một cách để tích hợp vào môi trường chính.

Một phiên bản của mỗi thứ là quá đủ.

+0

Tất cả mã cần được kiểm soát sửa đổi –

+0

@DavidHeffernan Mã nguồn của bên thứ 3? Không thực sự trừ khi bạn thay đổi nó. Những gì bạn có thể bảo vệ là các tập tin nhị phân/zip/gói bất kỳ nó đến. Nhưng chỉ có một phiên bản được cài đặt. Tôi đã thử làm "thực hành tốt nhất" trong quá khứ và luôn mang lại nhiều đau buồn hơn giá trị của nó –

+0

Nếu bạn không đặt nó dưới sự kiểm soát sửa đổi bạn không có khả năng phiên bản. Làm thế nào bạn có thể quay lại các phiên bản trước? Làm thế nào bạn có thể duy trì các chi nhánh phát hành? –

1

Điều đáng nói là một số công ty như LMD cung cấp quyền truy cập từ xa vào kho SVN của riêng họ cho khách hàng có đăng ký hỗ trợ. Tôi thấy rằng một cách tốt để nhận được các bản sửa lỗi nhanh cho các vấn đề quan trọng.

2

Thứ nhất, tôi sẽ đồng ý với cả Ken và Fabricio rằng bạn phải có mã nguồn cho tất cả các thành phần bạn đang sử dụng trong một dự án. Bất cứ điều gì khác chỉ là yêu cầu rắc rối.

Chúng tôi không sử dụng Subversion Kiểm Soát Nguồn của chúng tôi, nhưng tôi đoán những gì chúng ta làm vẫn sẽ được áp dụng ...

Mỗi dự án mà chúng tôi làm việc trên có một bản sao đầy đủ của tất cả các thành phần (nguồn) được sử dụng trong dự án đó. Khi chúng tôi phát hành, chúng tôi tạo một nhánh phát hành bao gồm các thành phần cũng như nguồn dự án. Mỗi dự án bao gồm thư mục BPL riêng của nó.

Chúng tôi luôn tạo phím tắt riêng để chạy Delphi cho từng dự án (hoặc nhánh của dự án) mà chúng tôi muốn làm việc và sử dụng tham số dòng lệnh -R để đặt khóa đăng ký duy nhất cho cài đặt Delphi dự án.

Chúng tôi sau đó đảm bảo rằng chúng tôi ghi đè biến môi trường Path trong Delphi để trỏ đến thư mục BPL dự án của chúng tôi thay vì thư mục BPL Delphi bình thường.

Chúng tôi đặt các thư mục đầu ra BPL và DCP cho tất cả các thành phần là thư mục BPL dự án cục bộ.

Điều này cho phép chúng tôi có nhiều phiên bản của Delphi, với nhiều phiên bản dự án sử dụng các phiên bản khác nhau của các thành phần mà không gặp bất kỳ sự cố nào.

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