Subversi macet karena "operasi sebelumnya belum selesai"?


229

Jika saya mencoba memperbarui repo subversi saya, katanya saya harus menjalankan pembersihan. Jika saya menjalankan pembersihan, dikatakan ada file yang hilang. (Saya menghapus direktori MASSIVE file yang gagal melakukan pagi ini dari PC rumah saya, tapi kemudian saya melakukan set file yang sama dari kantor, dan sekarang repo rumah saya gagal). Jadi, pembersihan mengatakan:

Pembersihan gagal memproses blablabla Tidak dapat mengatur file blablabla baca-tulis: Sistem tidak dapat menemukan file yang ditentukan.

Jika saya memperbarui dikatakan:

Perintah: Perbarui Kesalahan: Operasi sebelumnya belum selesai; jalankan 'pembersihan' jika terputus Kesalahan: Silakan jalankan perintah 'Bersihkan'. Lengkap!:

Bagaimana cara melepaskan ini?


(selain menghapus semua info SVN, dan memeriksa ulang)
coderama

3
kesalahan yang mengganggu itu sebabnya saya benci svn. Setiap kali menghadapi ini saya harus checkout kembali karena pembersihan dari folder root atau folder induk tidak berfungsi. Tetapi masalah terbesar adalah bahwa itu tidak menampilkan ikon overlay pada waktu itu jadi saya tidak tahu file mana yang telah diubah menjadi cadangan sebelum memeriksa
phuclv

Posting oleh @ sigurd-v adalah jawaban nyata untuk pertanyaan yang membantu saya dan banyak orang lain: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Jawaban:


102

Saya pernah dalam situasi yang sama. Sudahkah Anda mencoba menjalankan pembersihan dari akar ruang kerja Anda? Saya tahu kadang-kadang pembersihan dari direktori anak (di mana masalahnya terletak) tidak berfungsi, dan pembersihan dari akar ruang kerja tidak.

Jika itu masih gagal, karena Anda telah menghapus direktori anak di suatu tempat. Coba hapus 1 level lebih tinggi dari child dir juga (dengan asumsi itu bukan root), dan coba lagi pembaruan dan pembersihan.

Jika upaya pembersihan tidak berhasil pada level apa pun, maka sayangnya sayangnya checkout copy pekerjaan baru.


4
untuk membersihkan dari dir anak! Ini bekerja untuk saya!
Franva

1
Jika Anda membaca ini, Anda dalam kesulitan :) Saya tidak pernah mengalami kekacauan dengan Git (sejauh ini). Saya akhirnya membersihkan / mengembalikan / membersihkan dll pada direktori apa pun yang saya bisa, jika Svn mengizinkan saya.
aliopi

2
Posting oleh @ sigurd-v adalah jawaban nyata untuk pertanyaan yang membantu saya dan banyak orang lain: stackoverflow.com/a/22717607/5613292
Mehdi Javan

Saya memang menjalankan Pembersihan dari Windows FileExplorer (dengan Turtoise) dan itu memberi saya kesalahan yang lebih rumit yang memberi tahu saya apa file dengan masalah, entah bagaimana SVN kehilangan file itu, file * .cache darm, jadi saya mengambil .cache lain dan ganti nama untuk mengganti file yang hilang, jalankan pembersihan, tidak ada kesalahan saat ini, SEMUA TETAP !!
Jhollman

331

Seringkali tidak perlu untuk checkout atau menyalin.

Saya baru saja menyelesaikan masalah serupa yang berkaitan dengan kesalahan "operasi sebelumnya belum selesai" dengan bantuan dari ini ( Tautan )

Tampaknya svn terkadang macet saat memproses perintah / operasi. Semua operasi ini disimpan dalam file database wc.db di folder .svn.

Dengan mengunduh SQLite ke direktori checkout saya dan menjalankannya

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

Anda bisa mendapatkan daftar semua operasi yang tertunda. Operasi-operasi ini adalah kesalahan yang disebut sebagai "belum selesai".

Dengan berlari

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

semua operasi lama dihapus dari antrian kerja dan kesalahannya hilang. Tidak perlu checkout baru atau apa pun


5
Anda harus selalu mencoba menjalankan pembersihan sebelum mencoba solusi di atas. Ini berfungsi jika Anda ingin mendapatkan repositori SVN macet dan berjalan tanpa harus checkout copy pekerjaan baru.
Sigurd V

7
Mengunduh sqlite.exe dan menjalankan penghapusan sebenarnya lebih cepat daripada memeriksa dan menggabungkan - jawaban yang bagus
Jeffrey Knight

12
Saya juga mendapatkan "terkunci" setelah ini tetapi telah melewatinya dengan "pembersihan svn"
Jeffrey Knight

1
Saya menjalankan ini di Debian, instal menggunakan apt-get install sqlite3, maka Anda dapat menjalankan perintah di atas tanpa .exe
Richard Merchant

3
Saya mendapat pesan 'terkunci' juga, tetapi kemudian saya menjalankan perintah 'Bersihkan' dengan mencentang kotak yang mengatakan "kunci pecah", dan ternyata berhasil
McCoy

114

Menjalankan konsol svn cleanuptelah memecahkan masalah yang sama bagi saya.


20
Perintah konsol svn cleanupjuga akan memberikan informasi lebih rinci daripada menggunakan plug-in Tortoise Explorer, yang membuatnya sangat berguna dalam situasi seperti ini.
Brandon S

7
Menjalankan perintah konsol mungkin akan memberikan informasi yang cukup untuk benar-benar menyelesaikan masalah. Ini jawaban yang jauh lebih baik.
DDS

1
baik saya memilih folder paling atas dan digunakan svn cleanup, terima kasih
deadfish

Saya sering sukses dengan melintasi direktori orang tua dan menjalankannya, tetapi agak memakan waktu dan 'ajaib'. Tidak pernah tahu ini akan menghasilkan kesalahan terperinci, +1.
Phil Cooper

Saat Anda berlari svn cleanup, pastikan konsolnya terangkat. Saya tidak melakukan ini pada awalnya dan saya mendapatkan red-write: Access is deniedkesalahan.
Tony

26

Saya baru saja mengalami masalah serupa. Menjalankan Process Explorer menunjukkan bahwa program lain (Notepad ++) memiliki pegangan file ke folder yang coba dihapus oleh SVN. Ketika saya menutup Notepad ++, "Bersihkan" berhasil berjalan.


Itu bisa menghasilkan masalah yang disebutkan dalam pertanyaan. Tapi saya khawatir, itu tidak bisa dilikuidasi jika sudah terjadi.
Gangnus

19

Saya menghadapi masalah ini setelah menambahkan toples yang sudah ada di SVN dan saya menambahkan Versi baru itu dengan nama yang sama.

Di Eclipse saya mencoba ini

  1. Klik kanan pada folder> Tim> Refresh / Cleanup.
  2. Bersihkan, bangun, dan segarkan aplikasi saya.
  3. Mulai ulang Eclipse.

Dengan menggunakan langkah-langkah di atas saya dapat melakukan Sinkronisasi.


1
Bekerja untukku. Hanya saja, langkah ketiga tidak wajib (restart Eclipse).
jpmottin

Ini telah bekerja untuk saya juga, saya mencoba banyak hal tetapi tidak berhasil. Saya menutup studio visual saya dan menjalankan pembersihan. terima kasih banyak
AhammadaliPK

18

Saya telah mencoba jawaban yang paling banyak dipilih di sini dan beberapa yang lain tidak berhasil. WORK_QUEUEMeja saya kosong dan saya tidak dapat mencoba membersihkan di folder yang lebih tinggi. Apa yang melakukan pekerjaan adalah sebagai berikut (ini adalah melalui Tortoise SVN);

  • Klik kanan pada folder
  • Pergi ke TortoiseSVN -> Bersihkan ...
  • Pastikan opsi untuk Break Locksdicentang dan klik OK

Operasi Bersihkan sekarang selesai dengan sukses dan saya dapat melanjutkan. Tidak diperlukan pengunduhan sqlite3 atau solusi berbelit-belit lainnya.


2
Kunci istirahat tidak melakukan apa yang saya pikirkan. Itu hanya merusak kunci lokal yang digunakan pada sistem Anda. Bukan kunci yang telah ditetapkan orang lain.
Brian Carlton

1
sqlite3 terkadang menyelesaikan masalah saya, tetapi metode itu terlalu sulit untuk diingat dan pembersihan sering gagal. Metode ini menyelamatkan saya ..
sc

9

Mencoba menjalankan pembersihan saat file Anda terbuka memberi saya masalah. segera setelah saya menutup aplikasi saya (Visual studio) saya berlari bersih dan itu berhasil


1
Benar. Pastikan file Anda tidak digunakan atau diperiksa sebagai pengguna yang berbeda seperti Administrator di Windows.
froggythefrog

6

Saya menggunakan kura-kura SVN. Ketika pembersihan gagal, periksa opsi pembersihan

Pastikan opsi untuk Break Locks dicentang.

Langkah pembersihan

  • tombol kiri mouse di folder browse
  • pilih menu 'Tortoise SVN' -> 'Bersihkan ...'
  • centang ' Break Locks ' dicentang dan tekan 'ok'

Sudah dijawab, tetapi terkadang gambar membantu

masukkan deskripsi gambar di sini


4

Saya mendapat masalah yang sama, dalam kasus saya saya menggunakan svn tortoise dengan aplikasi yang saya maksud. Dengan menggunakan cmd shell windows dalam mode root, saya menerapkan pembersihan svn dan kemudian memperbarui svn .... Kemudian Anda dapat kembali ke mode aplikasi dan itu akan bekerja dengan sempurna!


2

Saya mencoba menghapus folder .svn ke lokasi lain dan meletakkannya kembali di folder root yang sama. Setelah ketika saya mencoba memperbarui SVN, itu diperbarui. Saya tidak tahu bagaimana tepatnya itu bekerja.


2

Saya memiliki masalah yang sama, dan entah bagaimana menemukan bahwa saya memiliki file .svn tersembunyi di tingkat c: \. Setelah saya menghapus folder tersembunyi ini (.svn), semuanya bekerja dengan baik. Saya harus secara tidak sengaja membuat direktori yang berfungsi di root drive.


2

Dalam kasus saya, saya menjalankan tegukan-menonton yang menyebabkan masalah. Setelah menghentikannya saya bisa menjalankan perintah Pembersihan.


Ini membantu saya membunuh JVM yang tidak diinginkan dan kemajuan.
Hidangan

2

hai teman-teman dalam kasus saya setelah saya menutup Visual Studio dan coba lagi untuk CleanUp berfungsi dengan baik


2

Saya juga terjebak dengan masalah yang sama yang saya coba hancurkan:

1.Cobalah membunuh proses yang berkaitan dengan svn yaitu TSVNCache.exe dan TortoiseProc 2.Reverting file yang tidak berversi dan penghapusan yang sama, yang saya miliki di svn. 3. bersihkan menggunakan command prompt "svn cleanup"

dan akhirnya ketika me-restart desktop itu bekerja untuk saya, Jadi untuk me-restart sistem bekerja untuk saya


1

hapus svn dari folder utama dan ganti dari copy yang layak yang Anda miliki dari elsewere.and kemudian perbarui. folder svn biasanya merupakan folder tersembunyi. Jadi, harap pastikan, untuk menyembunyikan folder sebelum melakukan langkah-langkah di atas.


1

Solusi yang berhasil untuk saya:

  1. Potong konten direktori Anda dan salin ke folder lain.
  2. Jalankan cleanup dari baris perintah pada folder kosong.
  3. Salin file kembali ke folder asli.

Selesai, tetapi saya tidak bisa menjelaskan mengapa ini terjadi. Jika Anda tidak menghapus file, perintah pembersihan mengatakan bahwa ia tidak dapat membaca / menulis file-file itu.


1

Saya memiliki masalah yang sama, apa yang berhasil bagi saya:

  1. Salin folder dan file Anda ke tempat lain, katakan ke folder (Saya mengubah file saya baru-baru ini dan komitmen gagal dan menyebabkan masalah yang ditangani)
  2. lihat copy pekerjaan baru
  3. salin file Anda yang diubah dari folder ke copy pekerjaan Anda dan timpa file yang ada. Komitmen / Pembaruan harus berfungsi sekarang

1

Saya memiliki kesalahan seperti "Tidak dapat mengubah izin file '/ Pengguna / Kode / UnitTest.cpp': Tidak ada file atau direktori". Subversi bingung tentang file yang tidak lagi ada. Saya hanya melakukan sesuatu seperti "echo ABCD >> /Users/Code/UnitTest.cpp" untuk membuat salinan file, lalu bersih-bersih. Itu berhasil.


1

Dalam kasus saya, kesalahan muncul ketika mencoba melakukan dari dalam IDE. Ketika saya menjalankan komit dari direktori yang sama dengan TortoiseSVN di explorer, operasi berhasil.


1

Itu telah terjadi pada saya ketika menggunakan eksternal dan salah satunya rusak. Saya harus pergi ke folder itu dan melakukan pembersihan. Kemudian pembersihan bekerja untuk seluruh copy pekerjaan.

Contoh: Menggunakan eksternal ^/widgets/foo common/foo-widget, pertama-tama lakukan pembersihan pada folder common/foo-widget.


1

Saya menyelesaikan kesalahan ini hari ini ketika terjadi mencoba Komit ke SVN. Kesalahan itu asli, TortoiseSVN tidak dapat mengakses file yang saya coba komit. File ini telah disimpan saat menjalankan program "As Administrator" di Windows. Ini berarti file tersebut memiliki akses Administrator tetapi tidak akses dari akun saya (TortoiseSVN berjalan sebagai pengguna interaktif). Saya mengambil kepemilikan file yang ditunjuk di bawah akun windows saya dan setelah itu Pembersihan dapat melanjutkan.


0

Saya awalnya mendapat masalah ini mencoba untuk memeriksa dengan TortoiseSVN. Awalnya, keduanya, TortoiseSVN membersihkan dan konsol svn pembersihan keduanya gagal dengan pesan yang sama seperti poster aslinya.

Tapi solusi saya, (ditemukan secara tidak sengaja) hanya menunggu beberapa menit. Saya pikir TSVNCache memegang beberapa file tersebut pada saat check in.


0

ikuti langkah-langkah di bawah ini.

1) Pergi ke direktori di mana Anda tidak dapat membersihkan dengan sukses melalui svn . (Folder root atau folder anak).

2) Pilih .svn folder di direktori, potong folder itu dan tempel di drive yang terpisah atau lokasi yang terpisah (keluar dari direktori svn)

3) Sekarang, kembali ke direktori - klik kanan dan pilih TortoiseSVN -->Repo-browser

4) Checkout folder (itu tidak akan melakukan checkout baru).

5) Semua item Anda akan diversi lagi, dan itu akan memperbaiki masalah internal svn, dan masalah harus diselesaikan.


HANYA melakukan checkout penuh. ada bantuan?
jujur

0

Dalam kasus saya contoh Java Virtual Machine berjalan, membunuh pembersihan yang berhasil.


0

Saya telah mengambil folder .svn dari sesama pengembang dan mengganti folder .svn saya dengan ini. Ini berhasil untuk saya. Tidak tahu apa konsekuensi lainnya!


0

Menggunakan tautan ini, https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-cleanup.html

Saya perhatikan tutorial telah memeriksa 6 opsi teratas. Dalam keputus-asaan saya mencobanya menggunakan kotak-kotak yang dicentang itu, dan yang mengejutkan saya ternyata berhasil. Pastikan untuk membaca dengan cermat apa yang dilakukan masing-masing. Melihat deskripsi masing-masing, mereka tampaknya aman untuk dimasukkan untuk saya, jadi salah satu item yang diperiksa tampaknya telah memperbaiki masalah apa pun yang menghambat saya.


0

Ini dapat terjadi ketika Anda memiliki file yang masih terbuka ketika Anda mencoba untuk beralih / pembersihan SVN.

Saya memiliki cabang tempat saya membuat file baru, yang saya buka di aplikasi lain. Beralih ke cabang lain tidak dapat menghapus file yang menyebabkan sakelar gagal. Ini juga menyebabkan svn cleanupkegagalan, namun ini tidak ditampilkan sebagai alasan di Tortoise SVN UI.

Menjalankan svn cleanupdari jendela konsol (pada folder root) dengan jelas menunjukkan kesalahanfile\location\file.ext: The process cannot access the file because it is being used by another process

Menutup semua pegangan file yang terbuka / jendela dan menjalankan konsol svn cleanupkemudian memungkinkan pembersihan berfungsi dengan benar.

Cerpen panjang - jalankan svn cleanupdi konsol untuk melihat kesalahan yang lebih rinci.


0

Lebih jauh ke jawaban Sigurd V (Anda harus mencobanya terlebih dahulu), beberapa basis kode yang lebih besar memiliki beberapa folder '.svn', dan itu tidak harus yang ada di direktori root yang memiliki tugas terkunci.

Jika itu masalahnya, Anda harus memeriksa masing-masing. Jika Anda sudah memiliki SQLite dan Powershell, Anda dapat menemukan direktori yang menyinggung dengan cepat.

Untuk menemukan folder mana yang dikunci, jalankan (ganti 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" } }.

Ini memberikan daftar direktori .svn dan, di bawah masing-masing, daftar tugas saat ini.

Jika ada tugas yang belum selesai, untuk masing-masing proses (ganti path\to\sqlite.exedan path\to\.svn\wc.db):

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


0

Saya telah melihat beberapa masalah dengan svn, termasuk yang ini, diselesaikan dengan menghapus / membuat .svn/tmpdirektori. Lalu larisvn cleanup


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.