Subversion bị kẹt do hoạt động trước đó đã không kết thúc?


229

Nếu tôi cố cập nhật repo lật đổ của mình, nó báo tôi phải chạy dọn dẹp. Nếu tôi chạy dọn dẹp, nó báo một tập tin bị thiếu. (Tôi đã xóa một thư mục MASSIVE của các tệp không thể cam kết sáng nay từ máy tính ở nhà của tôi, nhưng sau đó tôi cam kết cùng một bộ tệp từ công việc, và bây giờ repo nhà của tôi bị phá vỡ). Vì vậy, dọn dẹp nói:

Dọn dẹp không thể xử lý blablabla Không thể đặt tệp blablabla đọc-ghi: Hệ thống không thể tìm thấy tệp được chỉ định.

Nếu tôi cập nhật thì nó báo:

Lệnh: Lỗi cập nhật: Thao tác trước chưa kết thúc; chạy 'dọn dẹp' nếu nó bị gián đoạn Lỗi: Vui lòng thực hiện lệnh 'Dọn dẹp'. Đã hoàn thành!:

Làm thế nào để tôi có được unstuck này?


(ngoài việc xóa tất cả thông tin SVN và kiểm tra lại)
coderama

3
lỗi khó chịu đó là lý do tại sao tôi ghét svn. Mỗi lần đối mặt với điều này, tôi phải kiểm tra lại vì dọn dẹp từ thư mục gốc hoặc thư mục mẹ không hoạt động. Nhưng vấn đề lớn nhất là nó không hiển thị các biểu tượng lớp phủ tại thời điểm đó vì vậy tôi không biết tệp nào đã được thay đổi thành bản sao lưu trước khi kiểm tra
phuclv

Bài đăng của @ sigurd-v là câu trả lời thực sự cho câu hỏi đã giúp tôi và rất nhiều người khác: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Câu trả lời:


102

Tôi đã ở trong tình huống tương tự. Bạn đã thử chạy dọn dẹp từ gốc của không gian làm việc của bạn? Tôi biết đôi khi dọn dẹp từ một thư mục con (vấn đề nằm ở đâu) không hoạt động và dọn dẹp từ thư mục gốc của không gian làm việc.

Nếu điều đó vẫn không thành công, vì bạn đã xóa một thư mục con ở đâu đó. Thử xóa cả cấp độ cao hơn từ thư mục con nữa (giả sử đó không phải là root) và thử lại cập nhật và dọn dẹp.

Nếu các nỗ lực dọn dẹp không thành công ở bất kỳ cấp độ nào thì câu trả lời không may là kiểm tra một bản sao làm việc mới.


4
để dọn dẹp từ thư mục con! Nó làm việc cho tôi!
Franva

1
Nếu bạn đang đọc điều này, bạn sẽ gặp rắc rối :) Tôi chưa bao giờ gặp phải một mớ hỗn độn như vậy với Git (cho đến nay). Tôi đã kết thúc việc dọn dẹp / hoàn nguyên / làm sạch, v.v. trên bất kỳ thư mục nào tôi có thể, nếu Svn sẽ cho tôi.
aliopi

2
Bài đăng của @ sigurd-v là câu trả lời thực sự cho câu hỏi đã giúp tôi và rất nhiều người khác: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Tôi đã chạy chương trình Dọn dẹp từ Windows FileExplorer (với Turtoise) và nó đã cho tôi một lỗi phức tạp hơn, cho tôi biết tệp nào có vấn đề, bằng cách nào đó SVN đã mất tệp đó, tệp darm * .cache, vì vậy tôi đã lấy một tệp .cache khác. và đổi tên nó để thay thế tệp bị thiếu, chạy dọn dẹp, không có lỗi này, TẤT CẢ CỐ ĐỊNH !!
Jhollman

331

Thường không cần phải kiểm tra hoặc sao chép mới.

Tôi vừa giải quyết một vấn đề tương tự liên quan đến lỗi "hoạt động trước đó chưa kết thúc" với sự trợ giúp từ điều này ( Liên kết )

Có vẻ như đôi khi svn bị kẹt trong khi xử lý các lệnh / thao tác. Tất cả các hoạt động này được lưu trữ trong tệp cơ sở dữ liệu wc.db trong thư mục .svn.

Bằng cách tải SQLite vào thư mục thanh toán của tôi và chạy

sqlite3.exe .svn/wc.db "select * from work_queue"

bạn có thể nhận được một danh sách tất cả các hoạt động đang chờ xử lý. Các hoạt động này là những lỗi mà lỗi được coi là "chưa kết thúc".

Bằng cách chạy

sqlite3.exe .svn/wc.db "delete from work_queue"

tất cả các hoạt động cũ sẽ bị xóa khỏi hàng đợi công việc và lỗi không hoạt động. Không cần kiểm tra mới hay bất cứ điều gì


5
Bạn nên luôn cố gắng chạy dọn dẹp trước khi thử giải pháp trên. Điều này hoạt động nếu bạn muốn có một kho lưu trữ SVN bị kẹt và chạy mà không cần phải kiểm tra một bản sao làm việc mới.
Sigurd V

7
Tải xuống sqlite.exe và chạy xóa thực sự nhanh hơn kiểm tra và hợp nhất - câu trả lời tuyệt vời
Jeffrey Knight

12
Sau này tôi cũng đã bị "khóa" nhưng đã vượt qua nó bằng "dọn dẹp svn"
Jeffrey Knight

1
Tôi đã chạy nó trên Debian, cài đặt bằng apt-get install sqlite3, sau đó bạn có thể chạy các lệnh trên mà không cần .exe
Richard Merchant

3
Tôi cũng nhận được thông báo 'bị khóa', nhưng sau đó tôi đã chạy lệnh 'Dọn dẹp' kiểm tra hộp có nội dung "phá khóa" và nó đã hoạt động
McCoy

114

Chạy giao diện điều khiển svn cleanupđã giải quyết vấn đề tương tự cho tôi.


20
Lệnh console svn cleanupcũng sẽ cung cấp thông tin chi tiết hơn so với sử dụng trình cắm Rùa Explorer, điều này làm cho nó rất hữu ích trong các tình huống như thế này.
Brandon S

7
Chạy lệnh console có thể sẽ cung cấp đủ thông tin để thực sự giải quyết vấn đề. Đây là một câu trả lời tốt hơn nhiều.
DDS

1
tôi cũng đã chọn thư mục hàng đầu và được sử dụng svn cleanup, cảm ơn
deadfish

Tôi thường thành công với việc duyệt qua các thư mục gốc và chạy sạch chúng, nhưng nó hơi tốn thời gian và 'ma thuật'. Không bao giờ biết điều này sẽ trả về một lỗi chi tiết, +1.
Phil Cooper

Khi bạn chạy svn cleanup, hãy chắc chắn rằng bàn điều khiển được nâng lên. Tôi đã không làm điều này ban đầu và tôi đã nhận được red-write: Access is deniedlỗi.
Tony

26

Tôi chỉ có một vấn đề tương tự. Chạy Process Explorer cho thấy một chương trình khác (Notepad ++) có xử lý tệp vào thư mục mà SVN đã cố xóa. Khi tôi đóng Notepad ++, "Dọn dẹp" đã có thể chạy thành công.


Điều đó có thể tạo ra vấn đề được đề cập trong câu hỏi. Nhưng tôi sợ, nó không thể thanh lý nếu nó đã xảy ra.
Gangnus

19

Tôi đã phải đối mặt với vấn đề này sau khi thêm một bình đã có trong SVN và tôi đã thêm Phiên bản mới của nó có cùng tên.

Trong Eclipse tôi đã thử điều này

  1. Nhấp chuột phải vào thư mục> Đội> Làm mới / Dọn dẹp.
  2. Làm sạch, xây dựng và làm mới ứng dụng của tôi.
  3. Khởi động lại Eclipse.

Sử dụng các bước trên tôi có thể đồng bộ hóa.


1
Đã làm cho tôi. Chỉ là, bước thứ ba không bắt buộc (khởi động lại Eclipse).
jpmottin

Điều này cũng có hiệu quả với tôi, tôi đã thử rất nhiều thứ nhưng không hiệu quả. Tôi đã đóng cửa phòng thu hình ảnh của mình và chạy sạch. cảm ơn nhiều
AhammadaliPK

18

Tôi đã thử các câu trả lời được bình chọn nhiều nhất ở đây và một vài câu trả lời khác nhưng không có kết quả. WORK_QUEUEBàn của tôi trống và tôi không thể thử dọn dẹp ở một thư mục cao hơn. Những gì đã làm là như sau (điều này là thông qua Rùa SVN);

  • Nhấp chuột phải vào thư mục
  • Truy cập TortoiseSVN -> Dọn dẹp ...
  • Đảm bảo tùy chọn Break Locksđược đánh dấu và nhấp vào OK

Thao tác Dọn dẹp hiện đã hoàn tất thành công và tôi có thể tiếp tục. Không cần tải xuống sqlite3 hoặc các giải pháp phức tạp khác.


2
Phá khóa không làm những gì tôi nghĩ. Nó chỉ phá vỡ các khóa cục bộ mà nó sử dụng trên hệ thống của bạn. Không khóa mà người khác đã đặt.
Brian Carlton

1
sqlite3 đôi khi giải quyết vấn đề của tôi, nhưng phương pháp đó quá khó để nhớ và thường xuyên thất bại. Phương pháp này đã cứu tôi ..
sc

9

Cố gắng chạy dọn dẹp trong khi các tệp của bạn đang mở cho tôi các vấn đề. Ngay sau khi tôi đóng ứng dụng của mình (Visual studio) tôi đã chạy sạch và nó đã thành công


1
Thật. Đảm bảo các tệp của bạn không được sử dụng hoặc kiểm tra dưới dạng người dùng khác như Quản trị viên trên Windows.
froggythefrog

6

Tôi dùng rùa SVN. Khi dọn dẹp thất bại, kiểm tra tùy chọn dọn dẹp

Hãy chắc chắn rằng tùy chọn để phá khóa được kiểm tra.

Bước dọn dẹp

  • nút chuột trái trong thư mục khám phá
  • chọn menu 'Rùa SVN' -> 'Dọn dẹp ...'
  • kiểm tra ' Phá khóa ' đã kiểm tra và nhấn 'ok'

Nó đã trả lời, nhưng đôi khi hình ảnh giúp

nhập mô tả hình ảnh ở đây


4

Tôi gặp vấn đề tương tự, trong trường hợp của tôi, tôi đã sử dụng rùa svn với ứng dụng. Sử dụng shell cmd của windows trong chế độ root Tôi đã áp dụng dọn dẹp svn và sau đó cập nhật svn .... Sau đó, bạn có thể quay lại chế độ ứng dụng và nó sẽ hoạt động hoàn hảo!


2

Tôi đã thử xóa thư mục .svn sang vị trí khác và đặt lại vào cùng thư mục gốc. Sau khi tôi cố cập nhật SVN, nó đã được cập nhật. Tôi không biết chính xác nó hoạt động như thế nào.


2

Tôi đã có cùng một vấn đề và bằng cách nào đó tôi thấy rằng tôi có một tệp .svn bị ẩn ở cấp độ c: \. Khi tôi xóa thư mục ẩn này (.svn), mọi thứ đều hoạt động tốt. Tôi đã vô tình tạo ra một thư mục làm việc tại ổ đĩa gốc.


2

Trong trường hợp của tôi, tôi đã chạy đồng hồ gulp gây ra vấn đề. Sau khi dừng nó, tôi có thể thực hiện lệnh Cleanup.


Điều này giúp tôi tiêu diệt một JVM không mong muốn và tiến bộ.
Món ăn

2

chào các bạn trong trường hợp của tôi sau khi tôi đóng Visual Studio và thử lại với CleanUp, nó hoạt động rất tốt


2

Tôi cũng đã bị mắc kẹt với vấn đề tương tự mà tôi đã thử thổi:

1. Thử giết quá trình liên quan đến svn, tức là TSVNCache.exe và TortoiseProc 2. Loại bỏ các tệp không được đảo ngược và xóa cùng một tệp mà tôi có trong svn. 3.cleanup bằng dấu nhắc lệnh "svn dọn dẹp"

và cuối cùng khi khởi động lại máy tính để bàn, nó hoạt động với tôi, vì vậy, để khởi động lại hệ thống làm việc cho tôi


1

xóa svn khỏi thư mục chính và thay thế nó từ một bản sao khả thi khác mà bạn có từ otherwere.and sau đó cập nhật. thư mục svn thường sẽ là một thư mục ẩn. Vì vậy, hãy chắc chắn, để bỏ ẩn thư mục trước khi thực hiện các bước trên.


1

Cách giải quyết có hiệu quả với tôi:

  1. Cắt nội dung của thư mục của bạn và sao chép nó vào một thư mục khác.
  2. Chạy dọn dẹp từ dòng lệnh trên thư mục trống.
  3. Sao chép các tập tin trở lại trong thư mục gốc.

Xong, nhưng tôi không thể giải thích tại sao điều này xảy ra. Nếu bạn không xóa các tệp, lệnh dọn dẹp nói rằng anh ta không thể đọc / ghi các tệp đó.


1

Tôi đã có cùng một vấn đề, những gì làm việc cho tôi:

  1. Sao chép các thư mục và tệp của bạn sang một nơi khác, nói với một thư mục (Tôi đã thay đổi các tệp của mình gần đây và cam kết không thành công và dẫn đến vấn đề được giải quyết)
  2. kiểm tra một bản sao làm việc mới
  3. sao chép các tập tin đã thay đổi của bạn từ thư mục vào bản sao làm việc của bạn và ghi đè các tập tin hiện có. Cam kết / Cập nhật sẽ hoạt động ngay bây giờ

1

Tôi đã gặp một lỗi như "Không thể thay đổi perms của tệp '/Users/Code/UnitTest.cpp': Không có tệp hoặc thư mục như vậy". Lật đổ bị nhầm lẫn về một tập tin không còn ở đó. Tôi chỉ đơn giản là làm một cái gì đó như "echo ABCD >> /Users/Code/UnitTest.cpp" để tạo một bản sao của tệp, sau đó dọn dẹp. Nó đã làm việc.


1

Trong trường hợp của tôi, lỗi xuất hiện khi cố gắng cam kết từ bên trong IDE. Khi tôi thực hiện cam kết của cùng thư mục với TortoiseSVN trong trình thám hiểm, thao tác đã thành công.


1

Điều đó đã xảy ra với tôi khi sử dụng các phần bên ngoài và một trong số chúng đã bị hỏng. Tôi đã phải đi đến thư mục đó và thực hiện dọn dẹp. Sau đó, dọn dẹp làm việc cho toàn bộ bản sao làm việc.

Ví dụ: Sử dụng bên ngoài ^/widgets/foo common/foo-widget, đầu tiên thực hiện dọn dẹp trên thư mục common/foo-widget.


1

Tôi đã khắc phục lỗi này ngày hôm nay khi nó xảy ra khi cố gắng Cam kết với SVN. Lỗi là có thật, TortoiseSVN không thể truy cập vào tệp mà tôi đã cố gắng Cam kết. Tập tin này đã được lưu trong khi chạy chương trình "Là quản trị viên" trong Windows. Điều này có nghĩa là tệp có quyền truy cập Quản trị viên nhưng không truy cập từ tài khoản của tôi (TortoiseSVN đang chạy với tư cách người dùng tương tác). Tôi đã sở hữu tệp được chỉ định trong tài khoản windows của mình và sau đó Cleanup đã có thể tiến hành.


0

Ban đầu tôi gặp vấn đề này khi cố gắng đăng ký với TortoiseSVN. Ban đầu, cả hai, TortoiseSVN dọn dẹp và dọn dẹp svn console đều thất bại với các thông điệp tương tự như poster gốc.

Nhưng giải pháp của tôi, (vô tình phát hiện ra) chỉ là chờ vài phút. Tôi nghĩ rằng TSVNCache đang giữ một số tệp đó tại thời điểm đăng ký.


0

làm theo các bước dưới đây.

1) Chuyển đến thư mục mà bạn không thể dọn sạch thành công qua svn. (Thư mục gốc hoặc thư mục con).

2) Chọn .svnthư mục trong thư mục, cắt thư mục đó và dán vào ổ đĩa riêng hoặc vị trí riêng biệt (ngoài thư mục svn)

3) Bây giờ, quay lại thư mục - nhấp chuột phải và chọn TortoiseSVN -->Repo-browser

4) Checkoutthư mục (nó sẽ không thực hiện kiểm tra mới).

5) Tất cả các mục của bạn sẽ được phiên bản lại và nó sẽ sửa chữa vấn đề nội bộ của svn, và vấn đề cần được giải quyết.


nó CHỈ thực hiện kiểm tra đầy đủ. Có ai giúp đỡ không?
thẳng thắn

0

Trong trường hợp của tôi, một cá thể Máy ảo Java nền đang chạy, giết chết việc dọn dẹp thành công.


0

Tôi đã lấy thư mục .svn từ nhà phát triển đồng nghiệp của tôi và thay thế thư mục .svn của tôi bằng thư mục này. Nó làm việc cho tôi. Không biết những gì có thể là hậu quả khác!


0

Sử dụng liên kết này, https://tortoisesvn.net/docs/nightly/TortoirSVN_en/tsvn-dug-cleanup.html

Tôi nhận thấy hướng dẫn đã kiểm tra 6 tùy chọn hàng đầu. Trong tuyệt vọng tôi đã thử nó bằng cách sử dụng các hộp kiểm tra đó, và tôi ngạc nhiên khi nó hoạt động. Hãy chắc chắn đọc kỹ những gì từng làm. Nhìn vào mô tả của từng cái, chúng có vẻ an toàn khi đưa vào cho tôi, vì vậy một trong những vật phẩm được kiểm tra đó dường như đã khắc phục mọi vấn đề đang cản trở tôi.


0

Điều này có thể xảy ra khi bạn vẫn mở các tệp khi bạn cố gắng chuyển đổi / dọn dẹp SVN.

Tôi đã có một chi nhánh nơi tôi đã tạo một tệp mới, mà tôi đã mở trong một ứng dụng khác. Chuyển sang một nhánh khác không thể xóa tệp khiến công tắc bị lỗi. Điều này cũng gây ra svn cleanuplỗi, tuy nhiên điều này không được hiển thị là lý do trong UI SVN của Rùa.

Chạy svn cleanuptừ cửa sổ giao diện điều khiển (trên thư mục gốc) hiển thị rõ lỗifile\location\file.ext: The process cannot access the file because it is being used by another process

Đóng bất kỳ tay cầm / cửa sổ mở nào và chạy bàn điều khiển svn cleanupsau đó cho phép dọn dẹp hoạt động chính xác.

Câu chuyện dài - chạy svn cleanuptrong bảng điều khiển để xem lỗi chi tiết hơn.


0

Ngoài câu trả lời của Sigurd V (bạn nên thử trước), một số cơ sở mã lớn hơn có nhiều thư mục '.svn' và không nhất thiết phải là thư mục gốc có nhiệm vụ bị khóa.

Nếu đó là trường hợp, bạn phải kiểm tra từng cái. Nếu bạn đã có SQLite và Powershell, bạn có thể nhanh chóng xác định vị trí thư mục vi phạm.

Để tìm thư mục nào bị khóa chạy (thay thế path\to\sqlite.exe):

Get-ChildItem -Path . -Filter '.svn' -Recurse -Hidden | foreach { $toFind = $_.FullName + "\wc.db" ; gci $toFind | foreach { echo $_.FullName ; path\to\sqlite.exe $_.FullName "select * from work_queue" } }.

Điều này đưa ra một danh sách các thư mục .svn và, bên dưới mỗi thư mục, một danh sách các tác vụ hiện tại.

Nếu có bất kỳ nhiệm vụ nào còn dang dở, cho mỗi lần chạy (thay thế path\to\sqlite.exepath\to\.svn\wc.db):

path\to\sqlite.exe path\to\.svn\wc.db "delete from work_queue"


0

Tôi đã thấy một số vấn đề với svn, bao gồm cả vấn đề này, được giải quyết bằng cách xóa / tạo một .svn/tmpthư mục. Sau đó chạysvn cleanup


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.