2010-02-06 12 views
8

Tôi muốn đánh giá Mercurial cho các dự án làm việc của mình. Nhưng hầu hết các dự án của tôi phụ thuộc rất nhiều vào sự hiện diện của hỗ trợ svn: externals. Tôi đã tìm kiếm trên StackOverflow và googled để hỗ trợ tương ứng trong Mercurial. Tất cả những gì tôi thấy là tính năng phụ được thêm vào trong Mercurial 1.3, nhưng the page for this feature cho biết:Tính năng subprepos trong Mercurial 1.4.x đã sẵn sàng để sử dụng sản xuất chưa?

subrepos là một tính năng thử nghiệm cho Mercurial 1.3. Vì vậy, đừng làm điều này trên các kho lưu trữ quan trọng!

Tôi không muốn sử dụng thứ gì đó không ổn định.

Ai có thể làm sáng tỏ tình trạng thực của tính năng này và các kế hoạch đánh bóng/hoàn thiện và khi nó được gọi là "ổn định" và sẵn sàng cho các kho lưu trữ quan trọng?

+0

Tôi đã cập nhật wiki để rõ ràng hơn về trạng thái, tôi hy vọng điều đó sẽ hữu ích. –

Trả lời

6

Từ trong kênh IRC#mercurial là subrepos sẽ tiếp tục hoạt động khi chúng hoạt động và hỗ trợ sẽ phát triển. Ví dụ hiện tại lệnh 'hg status' không phải là subrepo - nó hoạt động, nó sẽ không tái chế, nhưng trong tương lai nó sẽ là. Tuy nhiên, các hành vi hiện tại, tệp định dạng (.hgsub và .hgsubstate) sẽ chỉ được thay đổi theo các cách tương thích ngược.

Vì vậy, hãy tiếp tục và tin tưởng vào nó ngay bây giờ và mong đợi nó trở nên tốt hơn.

P.S. Như của mercurial 1.4.2 subrepos bây giờ có thể được repos subversion, vì vậy bạn có thể sử dụng một phụ huynh mercurial và một đứa trẻ svn.

+0

Vì vậy, không có lộ trình rõ ràng cho tính năng này? Nói, trong hg 1.6 (hoặc 1.7) nó sẽ gần như hoàn thành, hoặc một cái gì đó tương tự? – bialix

+3

Hoàn toàn đủ để sử dụng ngay bây giờ. Một số quy trình công việc sẽ ít phức tạp hơn một chút, nhưng bây giờ nó đã hoàn thành. –

1

Tôi đã may mắn với tính năng trong việc sử dụng (ánh sáng) của tôi cho đến nay. Tiện ích này hữu ích ở hai nơi:

  1. Sao lưu một kho chứa không liên quan với một lệnh hg pull.
  2. Kết hợp dự án cùng với các phiên bản phụ thuộc cụ thể để một mã đơn lẻ có thể xây dựng được hg clone. Điều này gần hơn với cách sử dụng svn:externals điển hình.

Dưới đây là một vài trong những hạn chế Tôi đã nhìn thấy với nó cho đến nay:

  1. Trong trường hợp # 1 ở trên, bạn phải cam kết tất cả subrepos cùng một lúc. Điều này đôi khi chỉ gây phiền nhiễu, vì Mercurial (giống như bất kỳ DVCS nào) khuyến khích các cam kết thường xuyên — vì vậy hầu hết các repos không được để lại trong tình trạng không đầy đủ để bắt đầu.
  2. Chỉ các lệnh Mercurial cơ bản nhất mới được nhận thức: clone, push/pull, update/commit và có thể là một số khác.
  3. Tác giả mở rộng sẽ cần thời gian để kiểm tra tiện ích mở rộng của họ đối với kho lưu trữ có phân mục phụ.

Khi nhóm Mercurial mô tả tính năng là "thử nghiệm", chúng không có nghĩa là đột nhiên bạn sẽ quyết định xóa tất cả dữ liệu của mình. Họ chỉ có nghĩa là họ không mã hóa tất cả các trường hợp cạnh như xung đột tên (ví dụ: một nhà phát triển thêm một subrepo gọi là README, trong khi nhà phát triển khác thêm tệp văn bản có tên README).

+0

Trường hợp sử dụng của tôi là số 2 trong danh sách đầu tiên của bạn. – bialix