2009-02-24 30 views
19

Tôi muốn biết làm thế nào tôi có thể đặt hai kho lưu trữ cho một bản sao làm việc của mình. Tôi cần một kho lưu trữ trong máy chủ của tôi, để tôi có thể kiểm tra vào/ra giữa hai chiếc; Tôi cần một kho lưu trữ khác trong máy tính cục bộ của tôi, để tôi có thể thấy kết quả của diff một cách nhanh chóng (máy chủ svn của tôi nằm trên máy chủ chia sẻ chậm)SVN: một bản sao làm việc, hai kho lưu trữ?

Làm cách nào để làm điều đó?

+0

Điều này rất hữu ích cho các dự án mã nguồn mở khi gửi một bản vá, nhưng không muốn đợi nó được chấp thuận trước khi tạo một bản vá khác. – dbkk

+0

Hầu hết các dự án trong những ngày này sử dụng Git, những gì tôi đã làm là, nhân bản một kho lưu trữ GIT và Subversion'ed. Tôi có thể cập nhật bản sao Git và giữ nó cập nhật cũng như duy trì các thay đổi của tôi, với ít xung đột hơn. Nghĩ rằng nó sẽ cung cấp cho bạn một mẹo! – asyncwait

+0

có thể trùng lặp của [Tôi có thể có một dự án trong hai kho SVN không?] (Http://stackoverflow.com/questions/425975/can-i-have-one-project-in-two-svn-repositories) – JasonMArcher

Trả lời

11

Hãy xem repository replication.

Bạn có thể thiết lập công việc định kỳ để đồng bộ hóa định kỳ từ kho này sang kho lưu trữ khác. Nhưng bạn phải chắc chắn rằng các cam kết chỉ xảy ra với một trong hai.

Nếu cam kết sẽ xảy ra với cả hai kho lưu trữ, có thể là hệ thống phiên bản được phân phối chẳng hạn như git, Bazaar hoặc Mercurial có nhiều hơn con hẻm của bạn? Git, cho một, thậm chí cho phép bạn kéo và đẩy trực tiếp vào kho lưu trữ Subversion.

1

Nếu hộp địa phương của bạn là linux, bạn có thể tạo mục nhập crontab để cập nhật svn mỗi X phút để giữ cho nó được đồng bộ hóa với máy chủ trong nền. Từ đó bạn sẽ có bản sao mới nhất trên máy chủ svn địa phương của bạn để khác biệt.

7

Subversion không sử dụng truy cập mạng cho hoạt động khác biệt của nó. Đây là một trong những lợi ích tuyệt vời của Subversion trên CVS. Vì vậy, tôi không chắc chắn lý do tại sao bạn sẽ gặp phải vấn đề cụ thể đó.

Cách khác là sử dụng Git và cụ thể là git-svn trên máy tính cục bộ của bạn. Bạn nhận được một bản sao đầy đủ của toàn bộ lịch sử kho lưu trữ trên máy cục bộ của bạn, với khả năng phân biệt và xem lịch sử cục bộ (cùng với nhiều tính năng khác mà Git cung cấp cho bạn). Bất cứ khi nào có thể, bây giờ tôi sử dụng git-svn để truy cập kho Subversion.

+1

Đó là chỉ một hoạt động cục bộ của việc phân biệt phiên bản cục bộ với bản sao làm việc gốc. Nếu bạn đang khác với bản sửa đổi trước đó thì nó là một hoạt động từ xa. – Evan

+0

Được cấp, sự khác biệt cục bộ là bạn làm 90% thời gian, nhưng câu hỏi không xác định dứt khoát. – Evan

3

Nếu bạn không phải sử dụng SVN, bạn có thể sử dụng hệ thống điều khiển phiên bản được phân phối, chẳng hạn như Mercurial hoặc Git. Mỗi máy tính sẽ có bản sao lưu trữ riêng của mình và các thay đổi có thể được đồng bộ hóa trực tiếp giữa các PC hoặc thông qua một bản sao khác trên một máy chủ trung tâm. Vì mỗi PC có kho lưu trữ đầy đủ được lưu trữ cục bộ, bạn có thể làm khác hoặc bất kỳ thao tác nào khác mà không cần truy cập mạng.

1

Bạn có thể thử sử dụng svk làm ứng dụng khách địa phương thay vì svn. Svk là hệ thống điều khiển phiên bản phân tán giả sử dụng kho svn.

Bạn sẽ sử dụng svk để thiết lập gương của kho lưu trữ, đồng bộ hóa và bạn có thể khác với nội dung của trái tim, như nhiều bản chỉnh sửa theo ý muốn và tất cả đều là cục bộ.

Bạn cũng có thể tạo một nhánh của kho lưu trữ được nhân đôi và sử dụng nó làm thanh toán, sau đó cam kết của bạn cũng là hoạt động cục bộ và khi bạn sẵn sàng với một loạt cam kết, hãy đẩy chúng vào remote svn kho lưu trữ (và kéo người dùng khác thay đổi trở lại, tương tự như một lệnh cập nhật svn).

Hai hãy cẩn thận:

  1. Hãy chuẩn bị để sử dụng dòng lệnh. Không có TortoiseSVK hoặc GUI khác với kiến ​​thức của tôi.
  2. Tôi chỉ sử dụng svk trên Linux. Nếu bạn đang sử dụng các cửa sổ, tôi không chắc chắn khách hàng tốt đến mức nào.

Ngoài ra, tôi sử dụng lần thứ hai, quảng cáo, thủy ngân hoặc git như những người khác đã đề xuất. Bazaar có lẽ là dễ nhất để sử dụng, và có một giao diện TortoiseBzr mà một đồng nghiệp của tôi nói là khá vững chắc.

Git là khó sử dụng nhất. Nó giống như con dao quân đội swiss gần như rộng hơn nó dài, với tất cả các tiện ích nhỏ và ông bố trong đó và treo nó, với những con suối quá chặt đến mức bạn thỉnh thoảng cắt một ngón tay mở cố gắng giải thưởng một lưỡi ngoài.

+0

+1 con dao quân đội tương tự –

0

Tôi không tin rằng bản sao lưu trữ chuẩn sẽ cung cấp cho bạn những gì bạn muốn. Với thiết lập đó, một proxy luôn là chỉ đọc và tôi không nghĩ trong trường hợp của bạn.

Bạn sẽ phải thực hiện việc chuyển đổi svn - điều chuyển vị trí để chuyển đổi kho lưu trữ nào bạn đang xem ngay trước khi đăng ký. Hơi dễ xảy ra lỗi.

Điều bạn đang theo sau là write through proxy.

Nếu bạn cài đặt bằng apache và mod_svn_dav trên máy cục bộ, bạn sẽ có một kho lưu trữ cục bộ nhận tất cả các bản cập nhật và bạn có thể chống lại và thanh toán dễ dàng, nhưng tất cả ghi lại sẽ trở lại thực tế kho lưu trữ mà mọi người khác đang sử dụng và nhận cập nhật từ đó.

0

Kết quả của svn diff không phụ thuộc vào tốc độ kết nối của bạn với máy chủ; đó là một hoạt động hoàn toàn tại địa phương.

1

SVN vốn không phù hợp với các trường hợp sử dụng đó. Bạn sẽ phải tinh chỉnh với mọi thứ ở đây và ở đó (như viết crons). Nếu bạn muốn một cái gì đó mà làm việc ra khỏi hộp để phù hợp với trường hợp sử dụng như vậy, hãy thử GIT.

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