2011-02-05 58 views
5

Trên một dự án gần đây, tôi đã phải sửa đổi một thư viện nguồn mở để giải quyết một thiếu hụt chức năng. Tôi đã theo dõi thực hành tốt nhất của SVN về việc tạo kho lưu trữ "nguồn nhà cung cấp" và thực hiện các thay đổi của tôi ở đó. Tôi cũng đã gửi bản vá cho danh sách gửi thư của dự án đó. Thật không may, dự án chỉ có một vài người duy trì và họ rất chậm để cam kết cập nhật.Phương pháp hay nhất để quản lý thay đổi đối với thư viện nguồn mở của bên thứ ba?

Tại một thời điểm nào đó, tôi hy vọng thư viện sẽ được cập nhật và tôi hy vọng dự án của tôi sẽ muốn sử dụng thư viện được nâng cấp. Nhưng bây giờ tôi có một vấn đề tiềm năng ...

Tôi không biết liệu bản vá của mình có được áp dụng cho bản phát hành thư viện của bên thứ ba trong tương lai không. Tôi cũng không biết liệu bản vá của mình có còn tương thích với việc triển khai nội bộ các thành phần được nâng cấp hay không. Và trong mọi khả năng, ai đó sẽ duy trì dự án của tôi trước thời điểm đó.

Tôi có nên đặt tên thư viện theo cách đặc biệt để rõ ràng chúng tôi đã thực hiện các sửa đổi đặc biệt (ví dụ: commons-lang-2.x-for-my-project.jar)? Tôi có nên ghi lại bản vá và tham khảo vị trí SVN và liên kết đến mục danh sách gửi thư trong README không? Không có lựa chọn nào mà tôi có thể nghĩ là có vẻ là một minh chứng ngu xuẩn trong một kịch bản nâng cấp.

Thực tiễn tốt nhất cho việc này là gì?

Trả lời

4

Chi nhánh nhà cung cấp chương sách đỏ "SVN" bao gồm điều này. Ví dụ trong chương này dường như để phù hợp với tình hình của bạn chặt chẽ:

http://svnbook.red-bean.com/nightly/en/svn.advanced.vendorbr.html

...
Bây giờ bạn phải đối mặt với một tình huống thú vị. Dự án của bạn có thể chứa các sửa đổi tùy chỉnh cho dữ liệu của bên thứ ba theo một số thời gian rời rạc, chẳng hạn như sử dụng các tệp vá hoặc các phiên bản tệp và thư mục thay thế chính thức. Nhưng những điều này nhanh chóng trở thành những cơn đau đầu bảo trì, yêu cầu một số cơ chế để áp dụng các thay đổi tùy chỉnh của bạn cho mã của bên thứ ba và đòi hỏi phải tái tạo những thay đổi đó với mỗi phiên bản tiếp theo của mã bên thứ ba mà bạn theo dõi.

Giải pháp cho vấn đề này là sử dụng nhánh của nhà cung cấp. Chi nhánh nhà cung cấp là cây thư mục trong hệ thống kiểm soát phiên bản của riêng bạn có chứa thông tin được cung cấp bởi một thực thể hoặc nhà cung cấp bên thứ ba. Mỗi phiên bản dữ liệu của nhà cung cấp mà bạn quyết định hấp thụ vào dự án của bạn được gọi là thả nhà cung cấp.
...

+1

Tôi đã đọc chương này một lần trước và mặc dù tôi đã làm mọi việc đúng cách. Có một số sắc thái rất quan trọng trong cuộc thảo luận này mà tôi đã chải qua.Cảm ơn vì đã làm cho tôi đọc lại chương đó - nó đã có ý nghĩa hơn rất nhiều. –

+0

@ Jeff - cảm ơn phản hồi. Tôi rất vui vì nó đã giúp. –

1

Bên cạnh câu trả lời Bert, mà là tốt như xa như phần kiểm soát nguồn của câu hỏi là có liên quan, tôi cũng muốn đề nghị bạn viết một số đơn vị xét nghiệm có những thay đổi của bạn.

Và đừng hiểu sai, tôi không có ý nói rằng bạn chỉ nên viết một hoặc hai bài kiểm tra đơn vị và sau đó quên nó đi. Để thử nghiệm hồi quy/kiểm thử đơn vị để thực sự hoạt động, nó cần phải được thực hiện một cách có hệ thống và nó cần trở thành một phần nhất quán của quá trình xây dựng tự động của dự án. Và rõ ràng, điều này cũng không dễ dàng, một khi bạn đã đi, bạn sẽ không đảm bảo rằng người thay thế/đồng nghiệp của bạn tiếp tục sử dụng chiến lược thử nghiệm của bạn. Vì vậy, đó cũng là một cái gì đó mà bạn phải tài liệu, tinh chỉnh, làm cho nó dễ dàng hơn để làm, và liên tục giáo dục đồng nghiệp và quản lý của bạn trên.

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