2012-09-13 40 views
17

Nhóm của chúng tôi đã thử nghiệm với các mô đun con git cho một số chức năng CRUD cốt lõi được chia sẻ bởi hầu hết các sản phẩm của chúng tôi. Chúng tôi cũng đã sử dụng thành công các gói Nuget (tự lưu trữ) cho một số tiện ích phổ biến.Mô-đun con Git và gói Nuget

Thay đổi chức năng cốt lõi của chúng tôi thường đủ để giữ các mô đun con được thực hiện đúng cách là minh chứng cho nhiều việc vặt mà chúng tôi mong đợi. Tôi đang xem xét di chuyển các chức năng cốt lõi từ một submodule đến một gói Nuget nhưng tôi tự hỏi nếu các bản cập nhật thường xuyên cho các gói sẽ thậm chí còn nhiều hơn một nỗi đau trong Nuget.

Có ai có bất kỳ kinh nghiệm và hướng dẫn nào về những thách thức nào khác mà tôi có thể gặp phải trước khi thực hiện thay đổi hơi xâm nhập này đối với kiến ​​trúc và quy trình của chúng tôi không?

+0

SourceTree sẽ tự động phát hiện các mô-đun con đó chứa các chỉnh sửa không được cam kết và nhắc bạn cam kết chúng bất kỳ khi nào bạn thực hiện dự án mẹ. –

+0

Tôi tự hỏi những gì bạn kết thúc với?Chúng tôi nghĩ rằng đi từ Nuget để git submodules.Tôi không thích rằng gói nuget của chúng tôi không chứa các tập tin pdb (để giảm kích thước) .Debugging là phức tạp. Làm thế nào nó sẽ được tốt đẹp để có tất cả các dự án trong một giải pháp mà bạn có thể bước vào khi gỡ lỗi. Một vấn đề tiềm năng khác là kích thước lưu trữ. Chúng tôi sử dụng mối quan hệ sonatype và cần phải có chính sách lưu giữ gần như vô thời hạn đối với các gói vì một số gói có thể được yêu cầu nếu chúng 10 tuổi. Bởi vì những gói phụ thuộc chéo nuget lưu trữ/gói sẽ có dlls lặp đi lặp lại. Sợ nó sẽ đòi hỏi rất nhiều không gian – user1325696

Trả lời

3

Như với bất cứ điều gì, nó phụ thuộc. Bạn đã xem xét việc sử dụng một kho lưu trữ gói CI riêng biệt, nơi mọi cam kết với mô-đun lõi tạo ra một gói CI?

IMO thách thức lớn nhất là gói phiên bản , vì NuGet không hỗ trợ SemVer chưa đầy đủ (ví dụ: các phiên bản trước + số bản dựng) .

EDIT: nuget.org hiện hỗ trợ các phiên bản gói SemVer 2.0. Xem thông số này: https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29

Sử dụng SemVer đúng cách. Bạn thường không biết số phiên bản phát hành trả trước, vì vậy phiên bản gói CI của bạn tiếp tục từ bản phát hành ổn định mới nhất. Các gói CI như vậy sẽ được xem xét trước khi phát hành.

Ví dụ: 2.2.0-CI201209140650 (là phiên bản CI được chụp vào ngày 2012-09-14 lúc 06:50 cho bản phát hành 2.2.0 sắp tới) < - lưu ý: phiên bản này vẫn có thể thay đổi, nhưng luôn có một đường dẫn cập nhật.

Nếu bạn áp dụng SemVer v2.0.0, bạn thậm chí có thể áp dụng ví dụ sau: 2.2.0-CI.2012.09.14.06.50.

Lưu ý quan trọng: nuget.org (và bởi mức độ bất kỳ máy chủ NuGet khác/dịch vụ trên mạng như MyGet hoặc VSTS) không hỗ trợ nhiều phiên bản gói chỉ khác nhau bằng cách xây dựng siêu dữ liệu!

Điều này đã làm việc cho tôi bằng cách sử dụng các ràng buộc này (và một số cấu hình xây dựng TeamCity phù hợp). Vì vậy, trong ngắn hạn, đó là những rắc rối:

  • thích versioning
  • nhắc nhở để lựa chọn đúng đắn nguồn gói (giữ pkgs CI của bạn tách từ trước giải phóng và phát hành, mặc dù về mặt kỹ thuật gói CI của bạn là được phiên bản dưới dạng bản phát hành trước)
  • nâng cấp từ pkg CI lên bản phát hành trước có thể là vấn đề nếu thẻ trả trước được sắp xếp chuỗi cao hơn "CI" (ví dụ: "Alpha"). Trong trường hợp này: gỡ cài đặt gói "CI" theo sau là gói cài đặt "Alpha".

Hy vọng điều này sẽ hữu ích!

+0

hiện Nuget vẫn không hỗ trợ SemVer thích hợp? – diegohb

+0

nuget.org hỗ trợ SemVer 2.0 gần đây. Sẽ cập nhật phản hồi của tôi cho phù hợp. Xem thông số này để biết chi tiết về cách nuget.org hỗ trợ semver 2.0: https://github.com/NuGet/Home/wiki/SemVer2-support-for-nuget.org-%28server-side%29 –

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