Wednesday, August 16, 2006

Visual SourceSafe to Subversion migration - part 2

Lỗi "Invalid copy source path"

Để không phải load các thư mục cũ được tạo ra trong quá khứ nhưng không còn tồn tại, dumpfile được lọc qua lệnh svndumfilter. Lỗi thường gặp khi chạy lệnh này là "Invalid copy source path" có nguồn gốc tương tự như trên. Hậu quả là "rác" từ dumpfile không thể bỏ đi được mà cũng không thể xài được.

svndumpfilter3 tương tự như svndumpfilter nhưng được viết bằng python (2.4) cho phép ignore lỗi "Invalid copy source path" để chạy tiếp. Xem như lọc được bớt "rác" không cần thiết từ dữ liệu cũ.

Lỗi "File not found"

Khi load dumpfile kết quả của vss2svn với lệnh "svnadmin load" lỗi thường gặp là: "File not found: transaction ...". Lỗi này thường gây ra do một node được tạo ra với action "change" nhưng lại không được "add" trong một revision trước đó. Hậu quả là lệnh load bị hỏng giữa chừng.

Lỗi "File not found" thì phải xử lý bằng tay, mẹo là thay action "change" thành "add" đối với node gây ra lỗi. Cách làm là tìm ra số thứ tự của dòng (line number) mô tả action cho node gây lỗi (Node-action), thay thế "change" bằng "add", tiếp tục lệnh load. Để tìm ra số thứ tự dòng của node gây lỗi có thể dùng "grep -n" hoặc "less -N", sau đó có thể pipe trực tiếp qua sed để xử lý. Ví dụ:

# cat vss2svn-dumpfilter.txt | sed -e '12345678s/change/add' | svnadmin load /var/svn/project

Hơi thủ công tí nhưng rốt cuộc cũng load được hết dumpfile, kết quả còn hạ hồi phân giải.

No comments: