2010-02-20 35 views
11

Tôi có bản sao làm việc Subversion có ít nhất một tệp bị thiếu (bản sao cục bộ đã bị xóa trong khi khắc phục xung đột cây). Thật buồn cười vì tập tin được phiên bản, nó xuất hiện trong kho, độ phân giải xung đột cây là 100% cục bộ (nó đã xảy ra khi cập nhật và sau đó tôi không cam kết) và tôi đã chạy "svn cleanup" nhiều lần nhưng không có Máy khách Subversion (dòng lệnh svn và TortoiseSVN) có thể phát hiện bản sao làm việc bị hỏng. Thậm chí không hoàn nguyên tất cả các thay đổi đã nhận được tệp.Cách xác minh bản sao làm việc của Subversion

Tôi sẽ sửa nó như thường lệ (thanh toán mới ở một nơi khác và sao chép thay đổi bằng WinMerge); Tôi thực sự có một câu hỏi khác:

Làm cách nào bạn có thể kiểm tra tính hợp lệ của bản sao làm việc?

Tất nhiên, bạn luôn có thể kiểm tra bản sao mới và sử dụng tiện ích so sánh tệp nhưng ... không có cách nào tốt hơn? Có một công cụ để xác minh một bản sao làm việc tương đương với svnadmin verify không?

CẬP NHẬT === ===

Tôi đã có câu trả lời tốt đẹp với thủ đoạn để ngăn chặn việc sao chép tham nhũng nhưng câu hỏi của tôi đã được nhiều hơn trên dòng của việc tìm kiếm một phương pháp để chắc chắn 100% rằng làm việc bản sao là cả hai mạch lạc và liên kết với nội dung kho lưu trữ thực tế; trong các tác phẩm khác, một bản sao làm việc tương đương với lệnh svnadmin xác minh.

Cho đến nay, có vẻ như:

  • Subversion không cung cấp công cụ như vậy và nó có thể là định dạng dữ liệu SVN thậm chí không cho phép để viết một.

  • Cập nhật bản sửa đổi là một kỹ thuật dường như tìm (và sửa) một số vấn đề, mặc dù bạn thường cần phải hoàn nguyên về phiên bản cũ và tôi cho rằng nó chỉ có thể phát hiện các tệp bị thiếu nếu chúng đã bị thay đổi trong phạm vi sửa đổi.

  • Kiểm tra bản sao làm việc mới trông giống như phương pháp đáng tin cậy 100% duy nhất.

+0

Tôi đã gặp sự cố tương tự - việc đổi tên thư mục dường như gây ra sự cố vào các thời điểm, mặc dù không phải lúc nào. * Thông thường *, một lần hoàn nguyên sẽ đưa bản sao làm việc trở lại trạng thái hợp lệ, mặc dù có các mục không phiên bản (bên "bản sao" của thư mục được đổi tên) bị bỏ lại phía sau. Nhưng có, tôi muốn một công cụ kiểm tra tính hợp lệ là tốt. – Steve314

+0

Có thể, vấn đề là trạng thái sao chép hoạt động là hợp lệ, không phải những gì bạn nghĩ. Ví dụ, nó là hợp lệ cho một bản sao làm việc để loại trừ các tệp hoặc cặp nhất định trong kho lưu trữ. Chỉ vì một nhà nước là khó hiểu và không phải là những gì bạn dự định, không có nghĩa là nó không thể phát sinh hợp pháp, trong trường hợp "lỗi" không thể phát hiện được. Công cụ "trạng thái của bản sao làm việc này" liệt kê mọi thứ "thú vị" có thể hữu ích hơn. – Steve314

+0

@ Steve314: Nội dung cơ bản của bản sao làm việc phải giống hệt với nội dung trong kho lưu trữ. Subversion là một hệ thống điều khiển phiên bản tập trung, vì vậy đây là một điều kiện cần thiết và nó phải được phát hiện. Tất nhiên, công cụ bạn mô tả cũng sẽ tuyệt vời (ví dụ, tôi rất muốn học khi tôi có .svn dirs từ các kho khác nhau) nhưng đó là một câu chuyện khác. –

Trả lời

1

cho đến nay, tôi sẽ phải thừa nhận rằng không có một cách đáng tin cậy để làm trừ khi bạn thực hiện một cam kết mới và so sánh cả hai cây thư mục. Nếu thư mục .snv thiếu dữ liệu nhưng không thực sự bị hỏng, thì không có đủ thông tin trong bản sao làm việc để phát hiện một số tệp bị mất.

Mặc dù có thể WC-NG thay đổi điều này để có định dạng tốt hơn (hay không), định dạng hiện tại không phải là đá chắc chắn.

2

Nếu bạn nhấp chuột phải vào tệp, trong menu SVN, tôi tin rằng có lệnh gọi là Khác. Điều này sẽ mở ra và làm nổi bật sự khác biệt giữa phiên bản địa phương và phiên bản repo tôi tin.

Bạn cũng có thể thực thi khác với dòng lệnh nếu muốn.

+0

Thú vị ... Nếu tôi sử dụng mục trình đơn "Khác biệt với URL" của TortoiseSVN để so sánh bản sao làm việc với kho lưu trữ cuối cùng, tôi nhận được một thông báo lỗi: Đường dẫn D: /Project/working-copy/missing-file.php trong tệp bản vá không tồn tại. TortoiseMerge đã cố áp dụng bản vá bằng cách rút tiền tố nhưng không tìm thấy đường dẫn phù hợp. –

+0

@ Steve314: Bạn đã bỏ lỡ thẻ 'tortoisesvn' chưa? – sbi

+0

@sbi - vâng, và có vẻ như tôi cũng sai về số khác - ồ. – Steve314

1

Tôi đã gặp sự cố tương tự khi tôi bắt đầu làm việc với SVN bằng cách sử dụng Tortoise trên Windows. Bất cứ khi nào tôi cần một bản sao thư mục - ví dụ: khi tạo một trình cắm thêm mới dựa trên trình cắm thêm khác, đã có sẵn - tôi vui lòng sao chép + dán nó trong bản sao làm việc.

Điều tôi không biết là khi bạn làm điều đó, bạn sao chép dọc theo thư mục siêu dữ liệu .svn. Điều này gây ra sự lộn xộn vô tận lật đổ - nếu bạn làm việc với một máy khách đồ họa, thư mục mới có vẻ như được kiểm tra chính xác và khách hàng sẽ hiển thị cho bạn một đĩa sạch sau mỗi lần commit. Tuy nhiên, thư mục mới không bao giờ được kiểm tra trong.

Bạn nhận thấy điều này khi bạn kiểm tra một bản sao làm việc mới ở nơi khác, và sau đó bạn bị say bởi vì những tệp đó không bao giờ được kiểm soát phiên bản. Chi phí cho tôi nửa ngày để sửa chữa sau đó.

Khi bạn cần sao chép một thư mục trong bản sao hoạt động, luôn xuất nó trước, sau đó thêm lại.

3

này trông giống như một vấn đề mà tôi đã trải qua một thời gian trước: svn - file in working copy seems "lost"

trích dẫn câu trả lời của wcoenen đúng nguyên văn:

SVN 1.6.1 khách hàng (bao gồm cả TortoiseSVN) đã có một lỗi nơi thư mục sẽ thỉnh thoảng được đặt thành độ sâu "trống". Điều này gây ra các triệu chứng bạn mô tả. (Lưu ý rằng nó thể là các thư mục đã được thực hiện "trống rỗng" bởi svn 1.6.1 và vẫn như vậy ngay cả khi bạn đã nâng cấp với một khách hàng svn mới hơn trong thời gian có ý nghĩa.)

để khắc phục nó, sử dụng "cập nhật cho sửa đổi" mục trình đơn trong TortoiseSVN và chọn chiều sâu "đầy đủ đệ quy"

+0

Có vẻ tốt ngay từ cái nhìn đầu tiên. Trong bản thử nghiệm của tôi, phương pháp này đã phục hồi tệp bị thiếu. –

+0

Báo thức sai.Tôi đã thử nghiệm trong hai bản sao làm việc tôi có điểm đến cùng một vị trí và sửa đổi: một trong số họ đang thiếu một tập tin phiên bản và "Cập nhật để sửa đổi" không có gì để phục hồi các tập tin (hoặc thậm chí cảnh báo có điều gì đó sai). –

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