Tôi gặp lỗi này khi thực hiện svn update
:
Bản sao làm việc XXXXXXXX bị khóa Vui lòng thực hiện lệnh "Dọn dẹp"
Khi tôi chạy dọn dẹp, tôi nhận được
Dọn dẹp không thể xử lý các đường dẫn sau: XXXXXXXX
Làm thế nào để tôi thoát khỏi vòng lặp này?
Tôi gặp lỗi này khi thực hiện svn update
:
Bản sao làm việc XXXXXXXX bị khóa Vui lòng thực hiện lệnh "Dọn dẹp"
Khi tôi chạy dọn dẹp, tôi nhận được
Dọn dẹp không thể xử lý các đường dẫn sau: XXXXXXXX
Làm thế nào để tôi thoát khỏi vòng lặp này?
Câu trả lời:
Một cách tiếp cận là:
Một lựa chọn khác là xóa thư mục cấp cao nhất và kiểm tra lại. Hy vọng rằng nó không đến đó mặc dù.
Đối với tôi, mẹo là chạy svn cleanup
ở đầu bản sao làm việc của tôi, không phải trong thư mục mà tôi đã làm việc toàn bộ thời gian trước khi sự cố xảy ra.
Nhìn vào .svn
thư mục của bạn , sẽ có một tập tin trong đó được gọi lock
. Xóa tập tin đó và bạn sẽ có thể cập nhật. Có thể có nhiều tệp khóa trong .svn
thư mục của mỗi thư mục con. Họ cũng sẽ cần xóa. Điều này có thể được thực hiện như một đợt khá đơn giản từ dòng lệnh với vd
find . -name 'lock' -exec rm -v {} \;
Lưu ý rằng bạn đang chỉnh sửa thủ công các tệp trong .svn
thư mục. Họ đã được đặt ở đó vì một lý do. Lý do đó có thể là một sai lầm, nhưng nếu không bạn có thể làm hỏng bản sao địa phương của bạn.
find . | grep ".svn/lock" | xargs rm
Trong trường hợp của tôi, tôi đã giải quyết nó bằng cách xóa thủ công một bản ghi trong bản ghi khóa tệp ".svn \ wc" của SQLite trong bảng WC_LOCK.
Tôi đã mở tệp "WC" bằng trình soạn thảo SQLite và thực thi
delete from WC_LOCK
Theo bình luận của eakkas , bạn cũng có thể cần phải xóa tất cả các mục khỏi WORK_QUEUE
bảng.
Cách dễ nhất từng có:
Clean up working copy status
, Break locks
, Fix time stamps
, Vacuum pristine copies
, Refresh shell overlays
,Include externals
Bạn đã làm công việc của bạn thành công.
Kiểm tra ảnh chụp màn hình để bạn tham khảo.
Bước đầu tiên:
Bước thứ hai: Kích hoạt tùy chọn Khóa ngắt (hộp kiểm thứ hai trong cửa sổ bật lên dọn dẹp)
Hy vọng điều này sẽ giúp bạn rất nhiều.
Một đồng nghiệp tại nơi làm việc liên tục thấy tin nhắn này và đối với anh ta, đó là vì anh ta đã xóa một thư mục trong điều khiển phiên bản SVN mà không xóa nó khỏi SVN, và sau đó tạo một thư mục mới ở vị trí không thuộc quyền kiểm soát phiên bản, có cùng tên.
Nếu đây là vấn đề của bạn ...:
Có nhiều cách khác nhau để sửa nó, tùy thuộc vào cách thức / lý do thư mục được thay thế.
Dù bằng cách nào, bạn có thể sẽ cần phải:
A) Đổi tên thư mục hiện có thành tên tạm thời
B) Thực hiện hoàn nguyên SVN để khôi phục thư mục đã bị xóa khỏi hệ thống tệp, nhưng không phải từ SVN
Từ đó, bạn sẽ
A) Sao chép các tập tin liên quan vào thư mục đã bị xóa
B) Nếu bạn đã có một sự thay đổi đáng kể nội dung trong thư mục, làm một SVN xóa trên bản gốc, cam kết, và đổi tên thư mục lại mới đến tên bạn muốn, tiếp theo là một SVN thêm để có được điều đó một dưới sự kiểm soát phiên bản.
Đối với tôi không có giải pháp nào ở trên làm việc. Tôi tìm thấy một giải pháp bằng cách phá khóa. Khi tôi thực hiện dọn dẹp svn, tôi đã chọn "Phá khóa" cùng với "Dọn sạch trạng thái bản sao làm việc".
Cái này làm việc cho tôi
Sau khi dọn dẹp, nó sẽ cho phép bạn cập nhật lên phiên bản mới nhất.
Clean up working copy status
và Breaks locks
vàInclude externals
Đối với tôi, đó thực sự là lỗi của Rùa. Rùa chỉ phàn nàn "không thể dọn dẹp, chạy dọn dẹp", nhưng khi tôi chạy dòng lệnh (svn dọn dẹp), nó nói rõ với tôi rằng nó không thể xóa một số tệp đang sử dụng, giải pháp rõ ràng. Khi tôi đóng Visual Studio (đang giữ các tệp đang mở), thì quá trình dọn dẹp hoạt động tốt.
Các chương trình khác cũng có thể giữ các tệp mở trong repo gây ra vấn đề này. Excel giữ một xls mở là một thủ phạm trong một trường hợp khác, vì vậy có thể là khôn ngoan khi đóng tất cả các chương trình có thể đang sử dụng bất cứ thứ gì trong repo hoặc thậm chí khởi động lại để buộc các chương trình đóng lại và sau đó thử dọn dẹp lại.
Tôi gặp vấn đề này vì các thư mục bên ngoài không muốn được liên kết vào một thư mục hiện có. Nếu bạn thêm một dòng thuộc tính svn: externals trong đó đích là một thư mục hiện có (đã được phiên bản hoặc không có phiên bản), bạn sẽ gặp lỗi khóa SVN Wending Copy. Ở đây dọn dẹp cũng sẽ cho bạn biết rằng mọi thứ đều ổn nhưng vẫn cập nhật sẽ không hoạt động.
Giải pháp: Xóa thư mục gặp rắc rối khỏi kho lưu trữ và thực hiện cập nhật trong thư mục gốc nơi đặt thuộc tính svn: externals. Điều này sẽ tạo thư mục và tất cả sẽ ổn trở lại.
Vấn đề này phát sinh đối với tôi vì svn: externals cho các tệp yêu cầu thư mục đích phải được kiểm soát phiên bản. Sau khi tôi nhận thấy rằng điều này không hoạt động trên các kho khác nhau, tôi đã chuyển từ các tệp bên ngoài sang thư mục bên ngoài và rơi vào mớ hỗn độn này.
Cách dễ nhất để làm điều này là hiển thị các thư mục ẩn và sau đó mở thư mục .SVN. Bạn sẽ thấy tệp 0 KB có tên "khóa" xóa, điều này sẽ khắc phục sự cố
Tôi đã gặp vấn đề chính xác tương tự khi sử dụng SVN 1.7 và không có bản sửa lỗi nào được đề cập ở trên hoạt động.
Trước hết, hãy chắc chắn rằng bạn sao lưu tất cả nội dung đã chỉnh sửa của mình.
Sau khi dành vài giờ (không tải lại mọi thứ vì chi nhánh của tôi có kích thước hơn 6gb), tôi thấy rằng có một tệp db có tên "wc" trong thư mục .svn của chi nhánh.
Mở tệp db bằng bất kỳ trình quản lý db nào (tôi đã sử dụng plugin trình quản lý sqlite của firefox) và điều hướng đến bảng WC_LOCK. Bảng này sẽ có các mục cho các khóa thu được. Xóa các bản ghi khỏi bảng và bạn đã hoàn tất :)
Khi tôi gặp vấn đề này, tôi thấy việc chạy lệnh dọn dẹp trực tiếp trên đường dẫn vấn đề thường có vẻ hiệu quả. Sau đó, tôi sẽ chạy dọn dẹp từ gốc làm việc một lần nữa và nó sẽ phàn nàn về một số thư mục khác. và tôi chỉ lặp lại cho đến khi nó ngừng phàn nàn.
Nếu bạn đang sử dụng máy Windows, hãy xem kho lưu trữ thông qua trình duyệt và bạn cũng có thể thấy hai tệp có cùng tên tệp nhưng sử dụng các trường hợp khác nhau. Subversion phân biệt chữ hoa chữ thường và Windows không có để bạn có thể khóa khi Windows nghĩ rằng nó kéo xuống cùng một tệp và Subversion thì không. Xóa tên tệp trùng lặp trên kho lưu trữ và thử lại.
Tôi đã làm điều đó bằng cách chỉ tạo một thư mục mới, kiểm tra dự án, sao chép các tệp đã cập nhật vào thư mục mới.
Nó đã được cố định với một kiểm tra mới.
Bạn đang sử dụng TortoiseSVN và vừa nâng cấp? Tôi đã gặp vấn đề đó trước đây khi chuyển từ 1.4 sang 1.5 và không khởi động lại. (Hãy thử khởi động lại).
Lý do bạn cần khởi động lại là vì tập tin bộ nhớ cache trở nên thú vị.
Mặt khác, để tiếp tục, hãy xuất bản sao đang hoạt động đó vào một thư mục mới (không sao chép các thư mục ẩn .svn), kiểm tra lại dự án và di chuyển tất cả mã của bạn trở lại, sau đó tiến hành cam kết.
chỉ cần xóa các thư mục .svn, sau đó chạy dọn dẹp thư mục mẹ. Hoạt động hoàn hảo !!
Tôi thường nhận được một vấn đề như vậy. Mô hình của tôi gây ra vấn đề dọn dẹp.
Đóng trình xem ảnh nơi mở tệp bị xóa sẽ giải quyết vấn đề. Có lẽ các phần mềm khác có thể chặn dọn dẹp theo cùng một cách.
Nói chung. Tôi tin rằng khởi động lại máy tính có thể giúp đỡ trong những trường hợp như vậy.
SVN thường cập nhật cấu trúc bên trong của nó (.svn / prop-base) của các tệp trong một thư mục trước khi các tệp thực tế được tìm nạp từ kho lưu trữ. Khi các tập tin được tìm nạp, nó sẽ bị xóa. Thường thì lỗi được ném vì "cập nhật" không thành công hoặc bị hủy sớm trong quá trình cập nhật.
Bây giờ cập nhật sẽ hoạt động.
Có vấn đề tương tự vì tôi đã xuất một thư mục trong thư mục được kiểm soát phiên bản. Phải xóa thư mục khỏi TortoiseSVN, sau đó xóa thư mục khỏi hệ thống tệp (TortoiseSVN không thích các thư mục con không được đảo ngược ... tại sao không ???)
những điều sau đây nên làm:
tình trạng svn | grep ". L" | sed 's /.* (. *) $ / \ 1 /' | awk '{chiều dài in ($ 1), $ 1}' | sắp xếp -nr | awk '{in "đẩy" $ 2 "; svn dọn dẹp; popd"}' | sh
Đừng xóa giải pháp của bạn!
trong thư mục .svn bạn có một tệp gọi là khóa, nó dài 0 byte
Bạn có thể xóa tất cả các tệp này khỏi tất cả các thư mục .svn trong giải pháp của mình và nó sẽ hoạt động
Nó hoạt động trong trường hợp của tôi
Việc đảo ngược các tệp tại chỗ và kiểm tra mới vào cùng một vị trí, đã giải quyết vấn đề này cho tôi.
Trong TortoiseSVN, để thực hiện đảo ngược tại chỗ, kéo chuột phải vào thư mục gốc của bản sao làm việc từ danh sách tệp vào chính nó trong cây thư mục và chọn "SVN Xuất các mục được phiên bản tại đây" từ menu bật lên. TortoiseSVN thông báo rằng đích đến giống như nguồn và đề nghị hủy đảo ngược bản sao làm việc.
Sau khi hủy đảo ngược, hãy thực hiện kiểm tra mới vào cùng một thư mục (hiện có chứa một bản sao không đảo ngược của tất cả các tệp bạn có). TortoiseSVN sẽ cảnh báo bạn rằng bạn đang kiểm tra vào một thư mục hiện có, nhưng bạn có thể tiếp tục.
Sau này, dọn dẹp, cập nhật và các hoạt động khác hoạt động mà không gặp trở ngại. Vì cả hai bước trên đều bảo tồn các sửa đổi cục bộ, nên không có bất kỳ mất thông tin nào (nhưng sao lưu bản sao làm việc trước khi điều này có thể vẫn là một ý tưởng tốt).
Một cảnh báo: Nếu bản sao làm việc có chứa các phiên bản hỗn hợp hoặc thay đổi thuộc tính không được cam kết, thông tin đó SILL sẽ bị mất. Đối với tôi, đây không phải là một sự xuất hiện phổ biến và được lựa chọn một bản sao làm việc bị hỏng hoặc mất các thay đổi tài sản không được cam kết, tôi có xu hướng lựa chọn sau.
Tôi đã có vấn đề này khi "dọn dẹp" hoạt động, nhưng "cập nhật" sẽ tiếp tục thất bại. Giải pháp hiệu quả là xóa thư mục đang được đề cập qua Windows Explorer, chứ không phải xóa của TortoiseSVN (đánh dấu việc xóa là một thứ gì đó để cam kết với kho lưu trữ, và sau đó tôi đã thực hiện "kiểm tra" để "cập nhật" thư mục từ kho lưu trữ.
Thông tin thêm về sự khác biệt giữa xóa O / S và xóa SVN tại đây: http://tortoisesvn.net/docs/release/TortoirSVN_en/tsvn-dug-rename.html
Đáng chú ý:
Khi bạn TortoiseSVN → Xóa một tệp, nó sẽ bị xóa khỏi bản sao làm việc của bạn ngay lập tức cũng như được đánh dấu để xóa trong kho lưu trữ trên lần xác nhận tiếp theo.
Và:
Nếu một tệp bị xóa thông qua trình thám hiểm thay vì sử dụng menu ngữ cảnh TortoiseSVN, hộp thoại cam kết sẽ hiển thị các tệp đó và cho phép bạn xóa chúng khỏi kiểm soát phiên bản trước khi cam kết. Tuy nhiên, nếu bạn cập nhật bản sao làm việc của mình, Subversion sẽ phát hiện tệp bị thiếu và thay thế nó bằng phiên bản mới nhất từ kho lưu trữ.
Nếu bạn đang dùng Linux, hãy thử điều này:
find "/the/path/to/your/directory" -name .svn -type d | xargs chmod 0777 -R
Sau đó chạy cleanup
lệnh trên thư mục đó, sau đó thử cập nhật.
Tôi đã làm như sau để khắc phục vấn đề của mình:
Trong giải pháp thám hiểm, nhấp chuột phải vào dự án, trong menu phụ mở nhấp vào lật đổ và chọn dọn dẹp. Nó sẽ giải quyết vấn đề, như nó đã làm cho tôi. Hy vọng nó sẽ làm việc.