Kesalahan SVN - Bukan salinan yang berfungsi


215

Baru-baru ini server svn kami diubah dan kami melakukan pergantian svn.

Karena copy pekerjaan memiliki sejumlah besar sumber daya tidak berversi, copy pekerjaan terkunci dan kami mulai beralih folder dengan folder untuk semua folder di bawah svn, yang berfungsi dengan baik.

Tetapi pada level paling atas dari repositori, ketika saya mencoba memperbarui file, saya mendapatkan svn: Copy pekerjaan '.' kesalahan terkunci dan pembersihan juga tidak membantu. Ketika saya melakukan pembersihan, saya mendapatkan kesalahan seperti ini - svn: 'konten' bukan direktori copy yang berfungsi

Checkout baru BUKAN pilihan sama sekali. Apakah ada cara lain untuk membersihkan dan melepaskan kunci dan melakukan saklar sepenuhnya?

EDIT: Paragraf terakhir dalam jawaban JesperE

Jika Anda mendapatkan "bukan copy pekerjaan" ketika melakukan rekursif "svn cleanup" tebakan saya adalah bahwa Anda memiliki direktori yang seharusnya merupakan copy yang berfungsi (yaitu direktori .svn di tingkat atas mengatakan demikian), tetapi tidak ada memiliki direktori .svn. Dalam hal ini, Anda bisa mencoba menghapus / memindahkan direktori itu dan kemudian melakukan pembaruan lokal

tampaknya menjadi solusi untuk masalah di repositori. Saya telah mengidentifikasi folder-folder itu dan melakukan checkout baru dari folder-folder spesifik itu sendiri dan wow, kunci dilepaskan dalam pembersihan berikutnya! Terima kasih banyak JesperE !!

Tapi, saya masih belum bisa menemukan kesalahan svn switch yang sekarang berbunyi seperti,

svn: Repositori di 'svn: // repourl / reponame / foldername' memiliki uuid 'm / reponame', tetapi WC memiliki 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Ada ide?


untuk pengguna R yang mengalami kesalahan ini: github.com/wch/r-source/wiki#adding-svn-information
isomorphismes

Jawaban:


126

Jika Anda mendapatkan "bukan salinan yang berfungsi" ketika melakukan rekursif svn cleanup, dugaan saya adalah bahwa Anda memiliki direktori yang seharusnya merupakan salinan yang berfungsi (yaitu .svndirektori di tingkat atas mengatakan demikian), tetapi tidak ada .svndirektori sendiri . Dalam hal ini, Anda bisa mencoba menghapus / memindahkan direktori itu dan kemudian melakukan pembaruan lokal (yaitu rm -rf content; svn checkout content).

Jika Anda mendapatkan not a working copykesalahan, itu berarti bahwa Subversion tidak dapat menemukan .svndirektori yang tepat di sana. Periksa untuk melihat apakah ada .svndirektori dicontents

Solusi ideal adalah checkout baru, jika memungkinkan.


1
Saya setuju, lakukan checkout baru alih-alih mencoba memindahkan copy pekerjaan Anda dengan repo.
Tigraine

2
Masalah saya adalah bahwa saya telah bermigrasi ke server baru dan memulihkan cadangan sistem file saya dengan pekerjaan yang belum dilakukan, dan menggunakan svnadmin untuk menyaring proyek-proyek lama yang tidak lagi saya butuhkan. Jadi repositori saya berisi semua info yang saya butuhkan, tetapi memiliki UUID baru. Dalam hal ini, saya hanya akan mengumpulkan file yang diubah, mendapatkan checkout baru, dan kemudian menghapus.
Drarok

Saran Anda pada paragraf pertama tidak berfungsi pada sistem saya (W7 + Cygwin). Rm & svn pembaruan melakukannya.
Jukka Dahlbom

17
PERINGATAN: rm -rf menghapus folder contentsecara permanen. Ambil cadangan sebelum menjalankannya.
KrishPrabakar

47

Saya masuk ke situasi yang sama ( svn: 'papers' is not a working copy directory) dengan cara yang berbeda, jadi saya pikir saya akan memposting cerita pertempuran saya (disederhanakan):

$ svn add papers
svn: Can't create directory 'papers/.svn': Permission denied

Ups! perbaiki izin ... lalu:

$ svn add papers
svn: warning: 'papers' is already under version control
$ svn st
~     papers
$ svn cleanup
svn: 'papers' is not a working copy directory

Dan bahkan bergerak paperskeluar dari jalan dan berjalan svn up(yang bekerja untuk OP) tidak memperbaikinya. Inilah yang saya lakukan:

$ mv papers papers_
$ svn cleanup
$ svn revert papers
Reverted 'papers'
$ mv papers_/ papers
$ svn add papers

Itu berhasil.


6

Saya menyelesaikannya dengan

  1. Salin cadangan dari folder yang terkena dampak
  2. SVN mengembalikan folder yang terkena dampak
  3. Tempel file kembali dari cadangan

Dalam kasus saya masalahnya adalah karena file .svn dihapus.


Bagaimana cara melakukannya ? Tolong jelaskan secara singkat
Anand Savjani

5

Mungkin Anda baru saja menyalin pohon folder dan mencoba menambahkan yang terendah.

SVN
|_
  |
  subfolder1
       |
       subfolder2   (here you get an error)

dalam hal ini Anda harus mengkomit direktori pada level atas.


3

Penanganan masalah: Ganti nama direktori yang bukan 'copy pekerjaan'. Checkout / perbarui / pulihkan direktori ini lagi. Pindahkan file dari direktori yang diubah namanya menjadi perubahan komit baru

Alasan: Anda membuat beberapa perubahan pada beberapa file dalam direktori .svn, ini memecah 'copy pekerjaan'


3

Jika Anda membuat file di dalam direktori baru, alih-alih 'svn tambahkan newdir / newfile' gunakan 'svn add newdir' karena Anda perlu menambahkan direktori. Semua file di dalam direktori akan ditambahkan secara default.


1

Saya baru saja mendapat "bukan copy pekerjaan", dan bagi saya alasannya adalah Automouter di Unix. Hanya "cd / path / ke / work / direktori" baru melakukan trik.


1

Sama, saya perlu memperbarui folder 'contrib':

  1. Pindahkan folder lama keluar,
  2. Menyalin yang baru
  3. Menyalin folder .svn ke masing-masing (hanya tiga dalam kasus saya) folder baru.

Saya kasus saya juga masalah itu karena folder .svn dihapus.

Terpecahkan.


Ditemukan ini sekitar 4 jam dalam pembersihan SVN menggunakan plugin Eclipse - waktu yang baik! Salinan kerja terkunci - tidak, buat pesan Eclipse yang lebih baik, terima kasih.
Darth Jon

1

Saya mencoba menempelkan folder .svn dari sub folder ke folder root. Berhasil!!!


1

Inilah yang saya lakukan:

  1. ganti nama trunk menjadi trunk_
  2. buat folder trunk baru
  3. Check-out ulang dan sela proses setelah beberapa file check-out
  4. Pindahkan file dari trunk_ ke trunk
  5. Lakukan pembersihan
  6. Lakukan pembaruan svn. Ini akan memperbarui status file dan kemudian semua file Anda akan diversi.

1

Saya juga menemui masalah ini dalam operasi svn diff, itu disebabkan oleh jalur file yang salah, Anda harus menambahkan './'untuk menunjukkan direktori file saat ini.


0

svn: Repositori di 'svn: // repourl / reponame / foldername' memiliki uuid 'm / reponame', tetapi WC memiliki 'b5b39681-0ff6-784b-ad26-2846b9ea8e7d'

Setiap repo subversi memiliki pengidentifikasi unik (uuid). Subversion menggunakan ini untuk memastikan bahwa repo sebenarnya sama ketika melakukan hal-hal seperti beralih. Anda mungkin harus mengubah uuid di server menjadi sama seperti sebelumnya.


Mengubah uuid di server - Bagaimana melakukan ini?
Vijay Dev

Jujur, saya tidak tahu, saya hanya berasumsi bahwa itu bisa dilakukan. Sudahkah Anda memeriksa di Buku Subversi mengatakan sesuatu tentang itu?
JesperE

0

Mungkinkah ini merupakan ketidakcocokan format salinan yang berfungsi? Itu berubah antara svn 1.4 dan 1.5 dan alat-alat yang lebih baru secara otomatis mengkonversi format, tetapi yang lebih lama tidak lagi berfungsi dengan salinan yang dikonversi.


0

Anda harus menghapus file SVN - base dari proyek Anda (yang merupakan file hanya baca). Karena ini Anda mendapatkan kesalahan ini.

Lihat proyek baru lagi, gabungkan perubahan (jika ada) dari proyek SVN lama Anda dengan yang baru menggunakan "Winmerge" dan lakukan perubahan di check out terbaru Anda.


0

@JesperE menyebutkan bahwa Anda perlu mengubah uuid. Berikut ini akan membantu Anda mencapai ini.

Pada SVN 1.5+, Anda dapat melakukan svnadmin setuuid; Anda kemudian dapat memeriksa apakah sudah diatur dengan benar menggunakan svnlook uuid. Pada versi SVN sebelumnya, ini adalah proses yang lebih sulit. Lihat http://chestofbooks.com/computers/revision-control/subversion-svn/Kelola-Repository-UUIDs-Reposadmin-Maint-Uuids.html

Selain itu UUID "m / reponame" terlihat mencurigakan. Saya percaya ini harus berupa angka hex-diformat seperti copy pekerjaan, jadi mungkin tindakan ini akan meningkatkan segalanya :-)

[Saya awalnya mengomentari jawaban @ JesperE , tetapi membuat jawaban ini untuk membuatnya lebih jelas bagi orang-orang dan lebih bermanfaat bagi Google. Sejak itu saya menghapus komentar saya. ]


0

Punya masalah yang sama ini, ternyata kami memiliki Slik 1.6.2 serta Tortoise di mesin yang sama. Tortoise telah diperbarui (dan telah memperbarui copy pekerjaan) tetapi Slik tidak, jadi Tortoise bekerja dengan baik, tetapi baris perintah gagal dengan:

svn: '.' bukan direktori copy yang berfungsi

Menghapus Tortoise dan Slik, lalu menginstal ulang Tortoise dengan alat baris perintah diaktifkan, perbaiki ini untuk saya.


0

untuk mac: - ambil checkout dari sisi server dan jendela baru akan terbuka untuk memilih direktori dari mesin lokal Anda daripada meletakkan semua kode Anda di folder yang dipilih kemudian buka svn sisi lokal dan tambahkan dan komit proyek


0

Hari ini saya menemukan masalah yang sama /FILE_NAME/ is not a working copydi pagi hari dan saya telah menghabiskan lebih dari dua jam untuk menyelesaikannya. Setelah lama RND dan Google saya menemukan beberapa solusi dan itu CHECKOUT.

  1. CHECKOUTdari SUBVERSIONke lokal sebagai proyek baru.
  2. Ubah beberapa kode dalam file java dan COMMIT proyek.
  3. Ini bekerja untuk saya.

Semoga bermanfaat bagi Anda.


0

Baru-baru ini saya menggunakan pengembang lain Mac Saya memiliki situasi yang sama, masalahnya; pertama saya perlu mengetikkan jalur repo ke terminal tapi saya tidak, daripada yang mengatakan apa nama pengguna dan kata sandi Anda.


0

Saya baru saja berlari ke dalam kasus di mana direktori .svn berada di server nfs pada mesin yang berbeda, dan klien nfs tidak menjalankan layanan penguncian file ( lockd).

svn: E155007: '/mnt/svnworkdir' is not a working copy

Ini hilang sekali lockd dimulai pada host klien nfs.

Sepertinya subversi dapat muncul dengan pesan kesalahan yang lebih baik ketika mengalami kesulitan mengunci file. Ini adalah subversi 1.10.0


0

Saya membuat checkout baru dari proyek yang sama ke lokasi yang berbeda kemudian menyalin folder .svn darinya dan diganti dengan folder .svn saya yang lama. Setelah itu disebut fungsi pembaruan svn dan semuanya disinkronkan dengan benar up to date.


-1

Hapus folder .svn yang ada di mesin lokal Anda. Tekan ikon windows dan ketik .svn, hapus seluruh folder. Ini berhasil untuk saya.

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.