Bagaimana cara memperbaiki "mengandung area admin copy pekerjaan yang hilang" di SVN?

184

Saya menghapus secara manual direktori yang baru saja saya tambahkan, offline, di repositori saya. Saya tidak dapat memulihkan direktori.

Upaya apa pun untuk melakukan pembaruan atau komit akan gagal dengan:

"blabla/.svn" containing working copy admin area is missing.

Saya mengerti mengapa, tetapi apakah ada cara untuk memperbaikinya?

Saya tidak ingin checkout seluruh repo dan menambahkan perubahan saya secara manual, itu akan memakan waktu berjam-jam.

e-satis
sumber

Jawaban:

148

Menurut ini: http://www.devcha.com/2008/03/svn-directory-svn-containing-working.html

Periksa folder "blabla" ke lokasi yang berbeda dan kemudian salin folder .svn kembali ke "blabla" yang asli.

Menandai
sumber
62
Saya punya banyak SVN. Mengotori .svnsubdirektori di semua tempat pasti merupakan ide terburuk dalam sejarah kontrol versi.
Johannes Fahrenkrug
9
Teman-teman, periksa saran di bawah ini oleh Rob, itu jauh lebih mudah daripada solusi saat ini.
Mohammad Arif
Mohammed, terima kasih untuk kepala. Itu berhasil bagi saya. Sedang mencoba membuat SVN mengabaikan direktori log, dan menghapus .svn membuat saya mengalami masalah ini. Solusi Rob memecahkannya.
Asmor
Johannes, saya juga bukan pendukung SVN tetapi keuntungan dari direktori .svn adalah bahwa Anda dapat memeriksa sub direktori dari repositori dan mempertahankan kontrol versi.
Joseph Persie
@MohammadArif, Ada dua "Robs" sekarang
Charles Clayton
123

fwiw, saya memiliki situasi yang sama dan menggunakan svn - force delete __dir__ . Itu memecahkan masalah bagi saya. Kemudian saya terus bekerja dengan copy pekerjaan saya seperti biasa.

Matt Setter
sumber
2
Ini juga bekerja untuk saya. Pembaruan dan pembersihan gagal karena direktori tidak pernah ada di repositori, tetapi copy pekerjaan yakin bahwa itu di bawah kendali revisi. Saya ingin tahu apakah saya menambahkan direktori, tetapi kemudian menghapusnya sebelum saya komit?
Magnus
1
Ini sangat bagus. Saya telah menambahkan direktori, menghapus .svn tetapi tidak pernah melakukan. Totaly ini berhasil
Eric
8
Terima kasih; jawaban ini menghemat banyak waktu saya. svn cleanupkemudian svn --force delete <directory-that-doesn't-exist-but-should>bekerja untuk saya.
mpontillo
Bekerja pada percobaan kedua, saya pertama kali mencoba tanpa --force, yang entah bagaimana meninggalkan file kunci di .svn dari induk yang harus saya hapus secara manual. Kedua kalinya dengan --force memperbaiki masalah.
Jörn Horstmann
3
Hm, perintah itu hanya memberi saya kesalahan "copy pekerjaan" yang sama.
Oscar
72

Apa yang saya lakukan untuk memperbaikinya adalah menghapus salinan lokal folder yang dimaksud dan kemudian melakukan salah svn updatesatu induknya secara langsung sesudahnya.

Memperbaikinya tepat.

Maurizio
sumber
3
Aku tidak percaya ... Aku sudah mencoba semuanya ... dan itu mudah saja !!! Ini bekerja dengan sempurna, terima kasih banyak !!!!!
lucaferrario
Ini adalah jawaban yang paling mudah.
joaerl
35

Bisakah Anda mencoba memeriksa salinan baru dari direktori induk?

Sunting: Agar lebih spesifik, saya bermaksud menyarankan naik satu tingkat dan menghapus direktori yang berisi. Lalu lakukan a

svn update --set-depth infinity

untuk mengganti direktori.

Rob Wells
sumber
Saya mencobanya tetapi karena beberapa alasan aneh, saya berakhir dengan direktori kosong. Saya tidak mengerti ...
e-satis
<code> svn pembaruan secara eksplisit blabla </code> dari orang tua juga harus berfungsi.
jmanning2k
@manman2k, itulah yang saya pikir juga, tetapi OP mengatakan bahwa dia telah mencobanya dan tidak berhasil.
Rob Wells
Untuk memperjelas, saya menyarankan --set-depth infinitykarena ini: stackoverflow.com/questions/866835/…
Wim Coenen
1
Ini membutuhkan jauh lebih banyak upvotes ... solusi bersih yang cepat dan relatif (untuk standar svn).
Dino
6

Saya menambahkan direktori ke svn, lalu saya tidak sengaja menghapus folder .svn di dalamnya.

Saya menggunakan

svn delete --keep-local folderName

untuk memperbaiki masalah saya.

Alexander
sumber
Ini bekerja untuk saya ketika IDE saya menambahkan direktori, dan kemudian saya telah memindahkan direktori dengan nama yang sama ke tempatnya sebelum dilakukan.
quellish
mencoba ini, tetapi masih tidak bisa melakukan. Saya menggunakan svn checkout --force [url]yang menciptakan folder .svn
Lex
4

Saya baru saja melakukan 'svn revert / blabla' dan berhasil, folder kembali dan saya dapat svn menghapusnya

Mala
sumber
Terima kasih. Saya punya masalah ini dan mencoba saran Anda dan berhasil.
Boric
3

Kesalahan "Direktori 'bla / .svn' yang berisi area admin copy pekerjaan tidak ada" terjadi ketika saya mencoba untuk menambahkan direktori ke repositori, tetapi tidak memiliki cukup hak sistem file untuk melakukannya. Direktori belum ada di repositori, tetapi mengklaim berada di bawah kontrol versi setelah gagal menambahkan.

Memeriksa salinan direktori induk ke lokasi lain, dan mengganti folder .svn dalam direktori induk dari copy pekerjaan memungkinkan saya untuk menambah dan melakukan direktori baru dengan sukses (tentu saja setelah memperbaiki izin file).

Rob DiCiuccio
sumber
2

Kami menggunakan pakar dan svn. Itu salah checkin dari direktori target ke SVN yang menyebabkan kesalahan ini. Menghapus itu memperbaiki segalanya, jika petunjuk ini membantu siapa pun.

Madu
sumber
Menghapus apa / dari mana tepatnya?
DerMike
maven membuat direktori "target", ketika membangun. Biasanya tidak ada yang mengira untuk memeriksa yang ini. Checkin aksen membuat masalah saat checkout berikutnya yang membuat kesalahan ini. Menghapus direktori "target" dari SVN memecahkan masalah.
Madu
2

Saya mencoba svn rm --force /path/to/dirtetapi tidak berhasil tetapi akhirnya hanya berjalan svn updan memperbaikinya untuk saya.

Nathan JB
sumber
1

Saya memiliki kesalahan ini baru-baru ini, ketika file dikecualikan oleh pengaturan di SVN global saya. Kesalahan ini sangat buruk karena saya juga menghapus file langsung dari repositori - dan ini berarti solusi di atas menolak tidak akan berfungsi. Dalam kasus ini, secara manual menghapus direktori .svn dari direktori yang saya hapus dari SVN memungkinkan saya untuk menjalankan pembaruan yang kemudian memungkinkan saya untuk melakukan.

Casebash
sumber
1

Saya memiliki masalah yang sama, ketika saya mencoba untuk beralih "C: \ superfolder"

Pesan kesalahan:

Directory 'C:\superfolder\subfolder\.svn'
containing
working copy admin area is missing
Please execute the 'Cleanup' command.

Setelah mencoba melakukan "pembersihan", saya mendapatkan kesalahan berikut:

 Cleanup failed to process the following paths:
 C:\superfolder\
'C:\superfolder\subfolder\' is not a working copy directory

Larutan:

  1. Hapus folder "subfolder"
  2. Bersihkan folder "superfolder"
  3. Coba alihkan lagi folder "superfolder"

ini bekerja untuk saya. Tolong beri tahu saya jika itu juga berfungsi untuk Anda.

Andreas
sumber
1

Saya memiliki kesalahan ini baru-baru ini. Itu disebabkan oleh root yang memiliki beberapa file dalam direktori yang memberikan kesalahan ini.

Setelah saya mengubah izin semuanya bekerja seperti yang diharapkan.

JJ
sumber
1

Tidak mengerti banyak dari posting Anda. Solusi saya adalah

  1. Potong folder yang bermasalah dan salin ke beberapa lokasi.
  2. Dapatkan Solusi Dari Subversion ke dalam direktori kerja lain (hanya yang baru).
  3. Tambahkan folder Anda yang disimpan ke copy pekerjaan baru dan tambahkan sebagai Proyek yang Ada (jika itu proyek seperti dalam kasus saya).
  4. Melakukan;
Nyonya
sumber
1

Saya punya masalah ini. Cukup pindahkan blabla ke lokasi lain sementara, beri tahu svn untuk mengembalikannya, lalu pindahkan kembali. Itu diperlakukan sebagai tambahan baru. Sederhana!

Borik
sumber
1

Yang paling sederhana yang membantu saya:

rm -rf _dir_in_question_
svn up

Jika Anda memiliki perubahan dalam dir yang bermasalah, maka ini bukan solusi yang baik untuk Anda.

allprog
sumber
1

Saya menemukan masalah ini ketika mengganti perpustakaan API pihak ketiga dengan versi yang lebih baru, dan tidak ada solusi di sini yang benar-benar bekerja untuk saya karena saya ingin mengganti versi SVN dengan versi lokal. Solusi saya adalah sebagai berikut:

1) Pindahkan folder yang menyinggung ke dir rumah saya, hapus dari SVN dan komit:

mv foldercausingproblem ~/
svn --force delete foldercausingproblem
svn commit --message "Temporary removing folder with old API"

2) Pasang kembali folder, tambahkan ke SVN dan komit lagi:

mv ~/foldercausingproblem ./
svn --force add .
svn commit --message "Finally all working!"

Agak menjengkelkan harus melakukan dua kali, tetapi tampaknya telah bekerja dengan baik.

Jamie Brown
sumber
Saya biasanya suka bekerja pada kode secara terpisah dari copy pekerjaan saya dari repo (IDE, compiler, error parser dll. Tidak suka .svn, dan tidak ada perintah 'EVERYONE IGNORE .SVCE EXCEPT SVN!' Di Eclipse afaik); ini berarti bahwa proses komit dasar SVN untuk saya adalah: 1. checkout copy pekerjaan repo 2. menghapus direktori root proyek Saya memiliki pembaruan untuk 3. menyalin dan menempel direktori proyek yang diperbarui ke direktori induk proyek dalam copy pekerjaan 4. svn add --force <projname> 5. komit. Ini biasanya bekerja, tetapi kadang-kadang bisa melempar kesalahan OP. Perbaikan Jamie Brown berhasil dalam kasus saya
CCJ
0

Kalau-kalau ada yang ingin solusi lain:

  1. Periksa di folder baru Anda sebagai "foldername2"
  2. Pergilah ke browser repo Tortise SVN
  3. Ganti nama "foldername2" menjadi "foldername"
  4. Di windows explorer, lakukan pembaruan

Semoga ini bisa membantu seseorang.

-Ev

Ev.
sumber
solusi Windows saja.
Raptor
0

Bagi saya, masalah yang sama terjadi ketika saya berdua:

  • dihapus ( --force) file .map
  • menambahkan * .map ke svn:ignoreviasvn propedit svn:ignore .

Solusi saya adalah:

  1. batalkan perubahan pada properti
  2. komit perubahan pada file
  3. checkout salinan baru dari repositori (sayangnya!)
  4. ganti properti dan komit
18446744073709551615
sumber
0

Saya punya masalah ini ketika saya mencoba untuk menambahkan direktori ke svn. Saya menyelesaikannya dengan masuk ke browser repo. Mengklik kanan di jendela kiri, memilih menambah folder dan menambahkan direktori langsung di browser repo.

Saya kemudian menghapus direktori secara lokal (setelah cadangan tentu saja) melakukan pembersihan dan pembaruan svn dan semuanya bekerja kembali.

Bintik
sumber
Saya mungkin menambahkan bahwa ini ditambahkan ke file "svn sucks" saya.
Speck
0

Pertama-tama, checkout proyek ke sistem Anda dalam folder. Kemudian hapus folder .svn dari proyek konflik dan salin folder .svn dari folder checkout baru dan rekatkan ke folder copy pekerjaan Anda. Kemudian masalah terpecahkan.

Jaideep Singh Raikwar
sumber
0

Tugas umum yang saya alami adalah harus mengambil satu direktori repo dalam pementasan dan menyalinnya ke repo lain - baik di bawah SVN dan keduanya disebut nama yang sama. Cara yang bekerja untuk saya adalah sebagai berikut:

svn --force delete PROBLEMATIC-DIR
svn export "https://OLD REPO-A/ new-repo-A"
svn add new-repo-A
svn commit new-repo-A
texasdave
sumber