2008-09-27 41 views
57

Công ty của tôi có một công ty con có kết nối Internet chậm. Các nhà phát triển của chúng tôi phải tương tác với máy chủ trung tâm Subversion của chúng tôi. Có thể cấu hình một nô lệ/gương cho họ? Họ sẽ tương tác cục bộ với máy chủ và tất cả các cam kết sẽ được tự động đồng bộ với máy chủ chính.Làm thế nào để đồng bộ hóa hai kho Subversion?

Điều này sẽ hoạt động hiệu quả nhất có thể cho các nhà phát triển. Khả năng sử dụng là phải.

Vui lòng không có đề xuất thay đổi hệ thống kiểm soát phiên bản của chúng tôi.

+0

Tôi hoài nghi như thế nào proxy có thể cải thiện vấn đề này. Có thể một cam kết mất ít thời gian hơn cho POV của người dùng, nhưng dữ liệu vẫn phải được truyền đến master, và điều này vẫn chiếm cùng một lượng băng thông mạng. Do đó việc cập nhật chương trình chính cũng chậm, ngay cả khi nó xuất hiện nhanh hơn cho người dùng. Do hành vi không đồng bộ này, tổng thể có thể bắt đầu tụt lại phía sau. – aseq

Trả lời

27

Subversion 1.5 giới thiệu hỗ trợ proxy khi bạn đang sử dụng http để lưu trữ kho lưu trữ của mình. Các nhà phát triển có thể kiểm tra bản sao làm việc của họ từ nô lệ. Sau đó tất cả các hoạt động chỉ đọc (diff, log, update etc) sẽ sử dụng slave. Khi cam kết, các nô lệ minh bạch tất cả các hoạt động viết cho chủ.

+1

BTW , Tôi đang ở một công việc khác và thậm chí không sử dụng Subversion nữa. Tôi đã triển khai thành công giải pháp proxy. Argh, nó không phải là dễ dàng để cấu hình Apache và Subversion trong Windows. Vấn đề lớn nhất là khi một sự cố xảy ra trong quá trình đồng bộ. Giải pháp là có một tập lệnh thời gian khởi động để dọn dẹp. Bây giờ một người phi kỹ thuật chỉ có thể khởi động lại máy và mọi thứ hoạt động trở lại. – neves

+0

Có/là lỗi trong đó có thể gây ra proxy svn không hoạt động (tốt). Đó là lý do tại sao tôi đã không làm cho nó hoạt động được với thiết lập của tôi. Xem ví dụ http://subversion.tigris.org/issues/show_bug.cgi?id=3275 http://subversion.tigris.org/issues/show_bug.cgi?id=3445 sau này vẫn mở. – aseq

6

Bạn nên cố gắng The SVK version control system

SVK là một hệ thống kiểm soát phiên bản phân cấp được xây dựng với hệ thống tập tin Subversion mạnh mẽ. Nó hỗ trợ sao lưu kho lưu trữ, hoạt động bị ngắt kết nối, sáp nhập lịch sử nhạy cảm và tích hợp với các hệ thống kiểm soát phiên bản khác, cũng như các công cụ hợp nhất hình ảnh phổ biến.

Mở liên kết này có văn bản về Using SVK to Synchronize SVN Repositories

49

Có thể nhưng không nhất thiết phải đơn giản: vấn đề bạn đang cố gắng để giải quyết gần một cách nguy hiểm để thiết lập một môi trường phát triển phân phối mà không phải là chính xác những gì SVN là được thiết kế cho.

Cách SVN-gương

Bạn có thể sử dụng svn mirror như được giải thích trong tài liệu cuốn sách SVN để tạo ra một read-only gương của kho tổng thể của bạn. Các nhà phát triển của bạn tương tác với gương gần họ nhất. Tuy nhiên người sử dụng kho nô lệ sẽ phải sử dụng

svn chuyển --relocate master_url

trước khi họ có thể cam kết và họ sẽ phải nhớ chuyển nơi ở lại trên nô lệ khi chúng được thực hiện. Điều này có thể được tự động bằng cách sử dụng một kịch bản lệnh bao quanh các lệnh sửa đổi kho lưu trữ trên SVN nếu bạn sử dụng máy khách dòng lệnh. Hãy nhớ rằng hoạt động di chuyển trong khi nhanh chóng thêm một chút chi phí. (Và hãy cẩn thận để sao chép kho lưu trữ uuid - xem the SVN documentation.)

[Chỉnh sửa - Kiểm tra tài liệu TortoiseSVN có vẻ như bạn có thể có TortoiseSVN execute hook scripts client side. Bạn có thể tạo một kịch bản cam kết trước/sau tại thời điểm này. Hoặc là hoặc cố gắng xem bạn có thể sử dụng TortoiseSVN automation interface để làm điều đó] không.

Các SVK cách

svk là một tập hợp các script Perl mà thi đua một dịch vụ mirroring phân phối trên SVN. Bạn có thể thiết lập nó để nhánh địa phương (mirror) được chia sẻ bởi nhiều nhà phát triển. Sau đó, việc sử dụng cơ bản cho các nhà phát triển sẽ hoàn toàn minh bạch. Bạn sẽ phải sử dụng khách hàng svk để chọn anh đào, sáp nhập và bỏ đói. Nó có thể thực hiện được nếu bạn có thể xoay quanh các khái niệm phân tán.

Các git-svn cách

Trong khi tôi không bao giờ sử dụng mà bản thân mình, bạn cũng có thể có các nhà phát triển xa sử dụng git địa phương và sử dụng git-svn cửa ngõ để đồng bộ hóa.

Cuối cùng từ

Tất cả đều phụ thuộc vào môi trường phát triển của bạn và mức độ hội nhập bạn yêu cầu. Tùy thuộc vào IDE của bạn (và nếu bạn có thể thay đổi SCM), bạn có thể muốn xem xét các SCM được phân phối hoàn toàn khác (nghĩ Mercurial/Bazaar/Git/...).

+0

Có thể tạo tập lệnh khách hàng TortoiseSVN để tự động thực hiện việc di chuyển này không? – neves

+4

Câu trả lời này có nhiều phiếu bầu hơn số phiếu tôi đã chọn. Tôi nghĩ rằng giải pháp svnsync là tốt hơn bởi vì các cam kết xảy ra một cách minh bạch trên máy chủ. Không cần phải di dời. Khả năng sử dụng tuyệt vời. Người dùng cuối cùng cũng tìm thấy một thông báo lỗi lạ khi máy nhân bản không được đồng bộ hóa hoàn toàn. Thông thường họ chỉ phải đợi một vài phút và mọi thứ đều ổn. – neves

+0

Liên kết đến chương trong svn redbook tài liệu ghi thông qua thiết lập proxy: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy –

2

Nếu một trong các kho được đọc đầy đủ chỉ, bạn có thể sử dụng 'svnsync' để giữ cho nó cập nhật với kho lưu trữ chính. Công cụ này thường được sử dụng kết hợp với sự hỗ trợ proxy để tạo ra một thiết lập nô lệ chính.

Ví dụ: Apache thực hiện điều này để phản ánh kho lưu trữ của họ đến các châu lục khác nhau. Master repostitory nằm ở Mỹ, nhưng nếu tôi truy cập vào kho lưu trữ từ EU, tôi nhận được một máy nhân bản địa chỉ hoạt động tốt như máy chủ chủ.

1

Có một giải pháp thương mại cung cấp đúng sao chép active-active (không làm chủ nô lệ) của kho Subversion nếu bạn cần hiệu năng và an toàn dữ liệu ngoài những gì svnsync cung cấp được gọi là "Subversion MultiSite".

Disclaimer: Tôi làm việc cho công ty mà làm cho giải pháp này

1

VisualSVN Server Multisite Repository Replication được thiết kế cho trường hợp này.

Bạn có thể giữ kho lưu trữ chính trong văn phòng chính và thiết lập nhiều kho lưu trữ nô lệ có thể ghi tại các vị trí ở xa.

Điều này sẽ hoạt động hiệu quả nhất có thể cho nhà phát triển. Tính khả dụng là điều bắt buộc.

  • Các sao chép giữa nô lệ và chủ là minh bạch và tự động,

  • Mỗi kho chủ và nô lệ là một kho lưu trữ Subversion có thể ghi từ quan điểm của người dùng,

  • trình dùng ngoài trời của-the-box và có thể được cấu hình trong một vài lần nhấp chuột thông qua giao diện điều khiển MMC VisualSVN Server Manager.

VisualSVNServerManagerConsoleMultisite

+4

Sản phẩm trông đẹp mắt. Bạn chỉ quên nói rằng nó chi phí một ngàn đô la. – neves

+2

Ngoài ra, cả máy nhân bản và máy khách phải có máy chủ Visual SVN. – majkinetor

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