2009-09-28 9 views
8

Có thể đổi tên thư mục trong kho svn hay không.Có thể thay đổi tên dir trong kho bởi svndumpfilter không?

Không tạo bản sửa đổi mới trong đó thư mục này sẽ được đổi tên.

Tôi muốn thay đổi tên của thư mục này bắt đầu từ lần sửa đổi đầu tiên.

Theo tôi hiểu, tiện ích svndumpfilter có thể được sử dụng cho việc này.

Có đúng không?

Có ai có thể cho tôi ví dụ nhỏ về cách thực hiện không?

Trả lời

7

Bạn nên bãi chứa svnadmin kho lưu trữ của bạn, xử lý tệp kết xuất và tải svnadmin tệp được xử lý trong kho lưu trữ trống. Không cần svndumpfilter.

svnadmin dump /repos/path > old.dump 

Tệp kết xuất có thể được xử lý với Sed hoặc công cụ khác (đảm bảo dữ liệu nhị phân không bị hỏng) và thay thế tên thư mục. Ví dụ:

sed -b -e "s#^\(Node.*path\): dir1/dir_old#\1: dir1/dir_new#" old.dump > new.dump 

Khi bạn đã hoàn thành xử lý tập tin dump:

svnadmin create /newrepos/path 
svnadmin load /newrepos/path < new.dump 
+2

không xử lý cấu trúc dữ liệu phức tạp như bãi chứa svn với công cụ đơn giản như sed. Không ai đảm bảo rằng chuỗi ': dir1' không bao giờ xuất hiện ở nơi khác. – reto

+2

Trong trường hợp đó, bạn sẽ gặp lỗi 'Checksum mismatch' khi tải tệp đã xử lý. Xem định dạng tệp kết xuất: http://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt – fglez

+0

Thật tuyệt vời. Nó hoạt động. Nó là cách đơn giản nhất để di chuyển với các thư mục trong bãi chứa svn! – qub1n

3

Tôi muốn chắc chắn khuyên không sử dụng sed, bởi vì nó không hề biết về các định dạng tập tin và bạn có thể dễ dàng kết xuất tệp kết xuất SVN không sử dụng được.

Ngoài ra, nếu bạn muốn thay thế nhiều hơn một chút so với chỉ một đường dẫn, bạn cần phải cập nhật hoặc chỉ cần loại bỏ tổng kiểm tra SHA1 và MD5.

Sửa đổi một bãi chứa SVN thực sự không phải là tầm thường như nó có vẻ như lúc đầu.

Tôi đã gặp vấn đề tương tự, hôm qua và tôi đã viết một chương trình nhỏ cho mục đích này. Tôi công bố nó ở đây cho mọi người sử dụng:

https://github.com/nlmarco/svndumptransformer

Đó là phần mềm miễn phí và bạn đang chào đón để sửa đổi nó, nếu bạn muốn/cần nhiều tính năng hơn.

Chương trình này chỉ sửa đổi nội dung văn bản (nếu tệp - ví dụ: hình ảnh - được đánh dấu có loại "ứng dụng/octet-stream" loại mime, nó không bị sửa đổi). Và vì nó thực sự đọc và hiểu định dạng kết xuất SVN, nó không sửa đổi dữ liệu cấu trúc thuộc về bãi chứa SVN - không giống như lệnh sed ở trên.

Đối với tôi, chương trình này hiện đang hoạt động tốt khi đổi tên một sản phẩm - làm cho tất cả đường dẫn cũng như tệp cấu hình dự án (=> gradle) và vài chục lớp Java được đổi tên.

Tôi hy vọng rằng chương trình này cũng hữu ích cho người khác.

Btw. Tôi biết rằng câu hỏi này là rất cũ, nhưng tôi hy vọng rằng câu trả lời của tôi có thể giúp những người khác gặp phải vấn đề này, bây giờ.