2010-03-01 26 views
27

Given:Tải Svnadmin từ tệp dumpfile gây ra lỗi "không tìm thấy tệp". Cứu giúp?

Repository_1 - source

Repository_2 - destination

Tôi tạo ra một tập tin dump của Repository_1/FOLDER1 sử dụng sự kết hợp của svnadmin và svndumpfilter

Khi nạp từ các tập tin dump từ Repository_1/FOLDER1 vào Repository_2/Trunk mọi thứ đều tốt NHƯNG

Khi tải từ Kho lưu trữ_1/Thư mục1/Thư mục con (đã tạo một bãi chứa khác cho điều này) vào Kho lưu trữ_2/trunk tôi nhận được lỗi sau:

svnadmin: File not found: transaction '267-89', path 'trunk/Folder1/Sub-folder' 

Bất cứ ai có thể giải thích?

Trả lời

34

Tắt cấu trúc (thư mục trống) ở đích cần tạo trước. Vì vậy, Nếu bạn muốn làm điều này:

Khi tải từ Repository_1/FOLDER1/Sub-folder (tạo bãi khác cho việc này) vào Repository_2/trunk

you need to created this structure in svn

Repository_2/trunk/Folder1

lưu ý: bạn chỉ cần tạo bố mẹ, không phải là thư mục, do đó KHÔNG TẠO Kho lưu trữ_2/trunk/Folder1/Sub-folder

+0

Nó giải quyết được vấn đề của tôi. Cảm ơn một tấn. Bạn có thể xem xét vấn đề này không? http://stackoverflow.com/questions/28238863/include-multiple-folders-using-svndumpfilter –

1

bạn sẽ gặp lỗi này nếu ai đó đã sao chép nội dung nào đó từ trunk/Folder1 vào trunk/Folder1/Sub-folder. kể từ khi bạn chỉ bao gồm trunk/Folder1/Sub-thư mục trong bãi chứa của bạn, nó không thể tìm thấy các tập tin cần thiết (s) từ trunk/Folder1 nữa và dừng lại với lỗi này.

để giải quyết vấn đề này, bạn phải đảm bảo bao gồm mọi thứ trong bãi chứa đã là nguồn gốc của bản sao.

1

Tôi vừa trải qua lỗi này mà tôi đã truy tìm nâng cấp máy chủ ent và chu kỳ svnadmin dump/load. Vấn đề là tôi đã thiết lập các kho lưu trữ trong một thư mục khác nhau để người nó đã được tạo ra trong

Trên máy cũ, tôi đã sử dụng inetd.conf để chạy svnserve:.

svnserve -r /var/svn/main 

và kho là trong/var/svn/main

Tuy nhiên trên máy mới tôi đã inetd.conf trỏ đến /var/svn:

svnserve -r /var/svn 

Tôi đã có một thanh toán từ máy chủ cũ, vì vậy khi tôi cố gắng cam kết đường dẫn đích không tồn tại vì tôi vô tình thêm một thành phần khác vào URL, vì vậy svn://host/source/trunk đã trở thành svn://host/main/source/trunk.

Tôi có thể sửa nó bằng cách di chuyển các thư mục xung quanh, nhưng tôi đã chọn thay thế để viết lại URL của bản sao làm việc bằng cách sử dụng svn switch --relocate.

Lưu ý: chẩn đoán nhanh để xem liệu đây có phải là sự cố hay không để thay đổi thư mục trong bản sao làm việc của bạn, nhập svn info để lấy URL của kho và sau đó nhập svn ls <myUrl>. Nếu điều này gây ra lỗi No repository found thì bạn biết đây là nguyên nhân.

0

Tải kết xuất không thành công do trunk/Folder1 tạo đã được lọc bởi svndumpfilter. Theo this blog post, những bước cần thiết trên bãi:

Bạn có thể tạo trunk/FOLDER1 trong các bãi chứa, bằng cách chỉnh sửa các bãi chứa chính nó và thêm vào phiên bản đầu tiên khối sau:

Node-path: trunk/Folder1 
Node-action: add 
Node-kind: dir 
Prop-content-length: 10 
Content-length: 10 
PROPS-END 

khối này phải được chèn vào các khối đạo cụ của bản sửa đổi đầu tiên.

Sau đó, kết xuất có thể được tải bằng svnadmin.

1

Như đã nêu trong this thread, svnrdump hoạt động khác với svndump.

svndump + svndumpfilter:

  • Dumps toàn bộ lịch sử kho, sau đó lọc cho những điều bạn muốn. Điều này mất một thời gian dài trên các kho lưu trữ lớn, ngay cả khi bạn chỉ đang nắm lấy một cây con nhỏ.
  • Tạo tệp kết xuất có thể bị hỏng theo một số cách, như tạo tệp trong thư mục không tồn tại hoặc sao chép tệp từ đường dẫn không tồn tại.

svnrdump:

  • Tạo một dumpfile tự phù hợp.
  • Yêu cầu đường phụ nếu bạn muốn thực hiện tương đương với svndumpfilter include. Ví dụ: svnrdump https://server.example.com/svn/repo/branches/1.4 sẽ lấy tất cả các sửa đổi ảnh hưởng đến /branches/1.4.
  • Có thể yêu cầu thêm | svndumpfilter include/--drop-all-empty-revs --renumber-revs.

Tóm lại: svnrdump có thể hoạt động tốt hơn.

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