2012-02-22 29 views
6

Tôi sử dụng Mercurial cho phiên bản kiểm soát mã nguồn của mình. Nhưng một số người thích các hệ thống điều khiển phiên bản khác (như git, Bazaar, SVN, CVS).nhiều kho mã nguồn

Tôi muốn biết, có thể lưu trữ một kho lưu trữ trong nhiều hệ thống cùng một lúc, để mọi người có thể sử dụng bất kỳ kho lưu trữ nào họ muốn không?

+2

Những người muốn có thể dễ dàng kéo từ repo của bạn, sau đó làm 'darcs init' hoặc' git init' hoặc 'svn import' trong bản sao cục bộ của họ nếu họ muốn. Bạn hầu như không thể phục vụ cho sở thích của mọi người ở phía máy chủ, và giữ cho các bản chính của bạn đồng bộ với âm thanh pesky và tốn nhiều tài nguyên. – tripleee

Trả lời

4

GitHub đã phát triển tiện ích mở rộng hg-git cho Mercurial. Phần mở rộng này cho phép bạn sao chép từ kho lưu trữ git bằng Mercurial, và sau đó đẩy trở lại. Vì vậy, nếu bạn không nhớ có một kho git trung tâm, thì chắc chắn sẽ có thể truy cập nó bằng cả git và mercurial. Mặc dù là một câu trả lời khác đã chỉ ra hầu hết các công cụ VCS mà bạn đề cập khá giống với sử dụng, do đó, nó có vấn đề cho dù nó có giá trị trong nỗ lực để cho phép mọi người sử dụng bất cứ điều gì họ muốn, so với nỗ lực tối thiểu tham gia vào việc học một hệ thống mới.

3

Tôi không biết về Mercurial nhưng với AccuRev, bạn có thể duy trì mã nguồn của mình trong AccuRev và Git. Các plugin Kando chăm sóc nhân rộng từ AccuRev sang Git và ngược lại. Để biết thêm chi tiết, hãy xem http://www.accurev.com/kando

2

Không dễ dàng - bạn sẽ phải giữ cho từng nội dung được đồng bộ hóa với nhau, thông qua vô số móc nối và tập lệnh sự kiện. Có thể, ví dụ, để thanh toán từ subversion, hãy làm một hg init trong thư mục đó, và tạm thời làm việc bằng cách sử dụng mercurial, và sau đó cuối cùng cam kết trở lại subversion khi bạn đang hạnh phúc (đảm bảo bạn không thêm và cam kết và .hg tệp) . Cũng tùy thuộc vào số lượng nhà phát triển bạn có thể gặp phải tất cả các vấn đề với xung đột từ việc hợp nhất nếu hai nhà phát triển cam kết cùng một tệp theo các hệ thống kiểm soát phiên bản khác nhau.

Vì Subversion (và CVS) là hệ thống điều khiển phiên bản tập trung, và git, bazaar, và mercurial đều được phân phối, giữ chúng đồng bộ sẽ yêu cầu chọn bản sao chính cho mỗi bản.

Các công cụ VCS mà bạn đề cập đều tương tự nhau trên dòng lệnh (mặc dù CVS thực sự không nên sử dụng nữa), vì vậy đường cong học tập cho người dùng khác không quá dốc.

4

là nó có thể lưu trữ một kho lưu trữ dưới nhiều hệ thống cùng một lúc

Tôi nghĩ câu trả lời là không, như một kho lưu trữ có một định dạng cụ thể liên quan đến các ứng dụng.

Điều tốt nhất để làm điều đó cho nhà phát triển khác được ủy quyền sử dụng ứng dụng khách phù hợp với nhu cầu của họ, nếu nó tương thích với quy trình làm việc của bạn.

Ví dụ: Bạn có một repo SVN hiện có và một repo Git khác. Là một nhà phát triển, tôi chỉ muốn sử dụng BZR. Tôi có thể sử dụng bzr-svn hoặc bzr-git plugin đến chi nhánh từ SVN hoặc Git, cam kết cục bộ với BZR (và lợi ích từ các tính năng BZR), sau đó đẩy kết quả trở lại tới SVN hoặc Git.

1

Điều đó tùy thuộc vào việc các công cụ chuyển đổi có dễ chọn hay không và sử dụng ví dụ: git: git-svn được hỗ trợ chính thức, đó là xây dựng-in trong Windows phiên bản và dễ dàng để cài đặt trong debian/ubuntu với deb gói

hg:
https://www.mercurial-scm.org/wiki/WorkingWithSubversion
https://www.mercurial-scm.org/wiki/RepositoryConversion#Subversion với nhiều loại bộ chuyển đổi để lựa chọn từ, và nhiều trong số họ đòi hỏi một số thiết lập

bzr:
bzr-svn được tích hợp sẵn trong phiên bản Windows và nó được hỗ trợ chính thức
chi tiết tại đây: http://wiki.bazaar.canonical.com/ForeignBranches/Subversion