2012-10-22 25 views
7

Tôi phải làm việc trên hai kho lưu trữ và muốn di chuyển một thư mục có mã giữa hai trong khi vẫn giữ lại trạng thái quay vòng.SVN Di chuyển mã với lịch sử giữa hai kho

Tôi đã đọc một số câu hỏi ở đây về SO, nhưng tôi vẫn không biết chắc nên đi đường nào. Kho lưu trữ của chúng tôi là HUGE (tệp (orkingcopy) không bao gồm sửa đổi> vài GB), vì mọi thứ đều được đăng ký (mã + designdata + ...).

Các giải pháp tôi đã thấy cho đến nay là:

  1. svnadmin dump + bộ lọc + nhập khẩu: không phải là một lựa chọn do kích thước kho
  2. svnsync: Chúng tôi đã có dữ liệu trong kho thứ hai (kho lưu trữ là rất lớn, tôi không nghĩ rằng việc sáp nhập chúng là một ý tưởng hay, ngoài decidng đó không phải là công việc của tôi), và từ những gì tôi thu thập được, yêu cầu kho thứ hai phải trống.
  3. Third Party Solution: tai nạn liên tục, bởi vì nó không thể xóa một tập tin bởi vì "một quá trình hast tập tin mở" (enevthough tôi có thể loại bỏ các tập tin thông qua os, và nó được tạo ra bởi các script)

Có các giải pháp khác, cách tiếp cận này hay tôi thiếu một vài thứ về một trong các giải pháp?

+1

Tại sao tùy chọn đầu tiên là vấn đề? Bạn có thể chuyển kết xuất thông qua bộ lọc mà không lưu vào tệp. –

+0

@DmitryPavlenko: xem xét rằng kho lưu trữ là khoảng 20Gb kiểm tra ra và số sửa đổi là arround 6 chữ số (112 xxx) tại thời điểm này, bãi chứa phải lớn hơn đáng kể. Dumping kho lưu trữ hoàn chỉnh để di chuyển một thư mục mã mà là một vài megs trong kích thước có vẻ quá mức cần thiết. Điều này đặt rất nhiều căng thẳng không cần thiết trên hệ thống (Kiểm tra mọi bản sửa đổi/dump => "copy" 200G hoặc nhiều hơn (phải kiểm tra kích thước repro) => chạy bộ lọc trên 200G dữ liệu. chạy trên mạng mà là allready dưới nặng sử dụng nó ức chế công việc của chúng tôi – ted

+0

@ DmitryPavlenko: Trong ngắn hạn, tôi không chắc chắn tôi có 200G lúc xử lý của tôi (không phải là một admin chỉ là một người sử dụng), tác động mạng và chi phí. muốn tiếp tục làm việc trong khi số tiền này của dữ liệu được di chuyển.Nhưng những gì hiện svn dump làm gì nếu có truy cập kho lưu trữ trong thời gian có nghĩa là? – ted

Trả lời

7

Bộ lọc svnadmin dump + filter + import hoạt động ngay cả với các kho lưu trữ lớn.

Có một số điều bạn cần thực hiện để thực hiện. Tìm hiểu xem bản sửa đổi nào là lần đầu tiên tạo thư mục bạn muốn sao chép. Sau đó kiểm tra nhật ký để tìm bản sửa đổi cuối cùng đã sửa đổi bất kỳ thứ gì trong thư mục đó. Bạn chỉ cần đổ các bản sửa đổi trong phạm vi đó.

Sử dụng cờ --incremental để svndump.

Đừng cố gắng sử dụng cờ Deltas với SVN Dump. SvnDumpFilter sẽ không hoạt động trên các bãi được tạo bằng "deltas". Đừng cố gắng lưu bãi chứa lớn vào một tệp và chạy SvnDumpFilter trên tệp. Thay vào đó hãy làm điều đó trong một bước với một đường ống.

Nếu sửa đổi bắt đầu của bạn là 10000 và sửa đổi cuối cùng của bạn là 20000 và đường dẫn mà bạn muốn sao chép là dự án/nguồn, lệnh sẽ giống như

svnadmin dump --incremental -r10000:20000 YourRepoPath | svndumpfilter include projects/source --drop-empty-revs --renumber-revs > source.dump 

Tiếp theo là một lệnh svnadmin load để tải bãi vào repo khác của bạn.

+0

Tôi có thể làm điều này với kho lưu trữ không Trực tuyến? Sau khi tất cả tôi giới hạn bản sửa đổi cuối cùng. – ted

+0

Có, bạn có thể thực hiện kết xuất và tải với kho lưu trữ trực tuyến. – maddoxej