2011-11-17 28 views
8

Tôi có một số dự án riêng biệt chia sẻ một số mã phổ biến. Thực hành tốt nhất để hoàn thành điều này trong Git, và đặc biệt là SmartGit là gì?Cách chia sẻ mã tốt nhất với SmartGit

  • Có tất cả mọi thứ trong một kho lưu trữ khổng lồ

  • Có một kho lưu trữ cho từng dự án, và một kho lưu trữ mã chia sẻ và sử dụng Git Submodules.

  • Có kho lưu trữ cho từng dự án và một kho lưu trữ cho mã được chia sẻ và sử dụng Git Subtrees. Bất cứ ai có thể cho tôi biết nếu điều này được hỗ trợ bởi SmartGit, và làm thế nào nó có thể đạt được?

Tiềm năng tiềm ẩn với những phương pháp này là gì và thực tiễn tốt nhất với SmartGit là gì?

Trả lời

6

tôi khuyên bạn nên để một trong hai có một kho lưu trữ cho tất cả các dự án hoặc sử dụng submodules:

  • Nếu mã thông thường bạn bị ràng buộc chặt chẽ với nhau với các dự án của bạn, tái cấu trúc và các loại khác (API) thay đổi của bạn mã phổ biến có thể sẽ yêu cầu thay đổi trong tất cả các dự án của bạn, vì vậy nếu bạn có thể thực hiện mọi thứ với một cam kết trong một kho lưu trữ, bạn sẽ mất ít thời gian hơn để thực hiện kiểm soát phiên bản (với Git). Ví dụ, Git Submodules không thể chỉ đơn giản trỏ đến HEAD của một chi nhánh, nhưng chỉ với một cam kết cụ thể. Nó có thể nhận được cồng kềnh để luôn luôn cập nhật submodules của bạn để cam kết mới nhất.

  • Nếu mã chung của bạn giống như một thư viện độc lập hơn và thỉnh thoảng bạn có thể cập nhật các dự án của mình với các phiên bản mới hơn của thư viện đó, Submodules sẽ là lựa chọn tốt hơn. Chúng được hỗ trợ tốt với SmartGit và có kho lưu trữ riêng biệt cung cấp cho bạn ví dụ: tính linh hoạt để chỉ chia sẻ một số kho lưu trữ của bạn với những người khác, sau đó.

  • Không có hỗ trợ đặc biệt cho Subtrees trong SmartGit.

+0

+1, rất hữu ích. Có bất kỳ bất lợi cho tùy chọn đầu tiên? Bất cứ khi nào tôi phát hành một phiên bản của một trong các dự án của tôi, tôi chỉ đơn giản là chi nhánh toàn bộ kho lưu trữ? – Eric

+0

Việc phân nhánh toàn bộ kho lưu trữ sẽ hoạt động tốt, Git ví dụ: cho phép các tên chi nhánh như 'project1/branch1' (nội bộ:/refs/heads/project1/branch1). – mstrap

+0

Những bất lợi chính với một kho lưu trữ lớn là nó không thể được tách ra sau đó (AFAIK). Khả năng mở rộng về số lượng dự án rất có thể sẽ không có vấn đề gì vì Git cũng hiệu quả đối với các kho lưu trữ lớn. Tuy nhiên, thời gian làm mới của SmartGit sẽ tăng với kích thước cây đang tăng (Cần phải làm mới thường xuyên). Chỉ cần để cung cấp cho bạn một ý tưởng: nếu một kho lưu trữ lớn của bạn sẽ chứa khoảng 10K tệp, bạn không cần phải bận tâm về điều đó. – mstrap

1

Tôi cũng muốn sử dụng các dự án riêng biệt. Chúng tôi đã gặp phải vấn đề về bộ nhớ với các tệp lớn hơn và git + SmartGit. Tôi đang ở trong hộp thoại với syntevo vào lúc này. Với phiên bản mới nhất của SmartGit, khả năng sao chép nhận xét rất hữu ích. Hy vọng điều này sẽ giúp

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