SVN: Folder sudah di bawah kendali versi tetapi tidak terhubung?


111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statmengatakan itu tidak di bawah kendali versi, jadi saya mencoba menambahkannya, dan kemudian memberi tahu saya itu. Ketika saya melakukan svn ci, itu tidak comitted, dan tidak muncul ketika saya mencoba menelusuri ke repositori online.

Bagaimana cara membuatnya berkomitmen?


3
Apakah folder "pelengkapan otomatis" berisi subdirektori ".svn" yang rusak? Juga, apakah Anda membersihkan? :)
bzlm

1
Sudahkah Anda mencoba: pembersihan svn, hanya menusuk dalam gelap?
shaunhusain

Saya mengalami masalah ini ketika saya menyalin direktori check in ke folder lain dalam proyek saya. Menghapus karya .svn lama!
paulrehkugler

Aku paksa menambahkan file: svn add --force /path/to/file, atau jika Anda ingin menambahkan direktori secara rekursif: svn add --depth infinity --force /path/to/directory.
joker

Jawaban:


162

Salin folder yang bermasalah ke dalam beberapa direktori backup dan hapus dari direktori kerja SVN Anda. Ingatlah untuk menghapus semua .svndirektori tersembunyi dari folder yang disalin.

Sekarang perbarui proyek Anda, bersihkan dan lakukan apa yang tersisa. Sekarang pindahkan folder Anda kembali ke direktori kerja, tambahkan dan komit. Sebagian besar solusi ini berhasil, tampaknya pada dasarnya SVN menjadi bingung ...

Pembaruan: mengutip komentar oleh @Mark :

Tidak perlu memindahkan folder, cukup menghapus .svnfolder dan kemudian menambahkan svn itu berhasil.


52
Tidak perlu memindahkan folder, cukup menghapus .svnfolder dan kemudian menambahkan svn itu berhasil.
mpen

6
1 untuk membuat hari saya menyenangkan ;-) Seperti yang dikatakan Mark, bagi saya itu sudah cukup untuk menghapus direktori .svn di dalam folder yang bermasalah.
rturrado

23
Terima kasih telah mengidentifikasi SVN sebagai BS yang benar.
Steve K

1
sekarang Anda hanya memiliki .svn di folder atas, Anda tidak dapat melakukan BS ini, jika metadata rusak, Anda bersulang
Kalpesh Soni

hapus centang folder induk (apps / autocomplete) dari daftar jika sudah berkomitmen
khaled_webdev

20

Saya mengalami masalah yang mirip setelah menambahkan pohon direktori yang berisi direktori .svn (karena ini adalah svn: eksternal dalam lingkungan sumbernya): status svn memberi tahu saya "?", Tetapi ketika mencoba menambahkannya, itu "sudah di bawah kendali versi ".

Karena tidak ada direktori berversi lain yang hadir, saya lakukan

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

untuk menghapus direktori .svn yang salah; setelah melakukan ini, saya dapat menambahkan direktori baru.

Catatan :

  • Jika direktori berversi lain ada di dalamnya, ekspresi find harus diubah menjadi lebih spesifik
  • Jika tidak yakin, pertama-tama hilangkan bagian "-exec ..." untuk melihat apa yang akan dihapus

Meskipun jawaban ini berhasil untuk saya, pertama kali saya menggunakannya, saya berada di folder yang salah dan membuat semuanya menjadi sangat berantakan. Sepertinya tempat yang bagus untuk mengingatkan orang untuk "mengukur dua kali, memotong sekali" yaitu memeriksa ulang detailnya sebelum menjalankan yang satu ini.
BishopZ

Saya merekomendasikan 'jika tidak yakin' ... -exec echo {} \;sehingga Anda bisa mendapatkan saklar -exec Anda bekerja dengan baik juga.
FlipMcF

juga merekomendasikan menambahkan -type duntuk menemukan. Panggil saya pilih-pilih sampai Anda rm -rfmelangkah terlalu jauh. Selain nitpicks saya - saya pikir ini adalah jawaban yang benar.
FlipMcF

15

Variasi pada jawaban @ gauss256 , menghapus .svn, berhasil untuk saya:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Sebelum solusi Gauss, saya mencoba pendekatan @ jwir3 dan tidak mendapatkan kegembiraan:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit

14

(1) Ini baru saja terjadi pada saya, dan saya pikir itu menarik bagaimana hal itu terjadi. Pada dasarnya saya telah menyalin folder ke lokasi baru dan memodifikasinya, lupa bahwa itu akan membawa semua direktori .svn yang tersembunyi. Begitu Anda menyadari bagaimana hal itu terjadi, lebih mudah untuk menghindarinya di masa depan.

(2) Menghapus direktori .svn adalah solusinya, tetapi Anda harus melakukannya secara rekursif di sepanjang pohon direktori. Cara termudah untuk melakukannya adalah:

find troublesome_folder -name .svn -exec rm -rf {} \;

3

Sudahkah Anda mencoba melakukan pembersihan svn?


2
Saya juga mengalami masalah ini. Kemudian mencoba svn cleanupdan itu tidak membantu.
iMacake

3

Periksa direktori 'apps / autocomplete / .svn'. Pindahkan ke tempat yang aman (jika Anda perlu memulihkannya karena ini tidak berhasil) dan lihat apakah itu memperbaiki masalah.


0

Saya menemukan solusi jika Anda telah menginstal Eclipse (Luna) dengan Klien SVN JavaHL (JNI) 1.8.13 dan Tortoise :

Buka Eclipse: Pertama coba tambahkan modul proyek / maven ke Kontrol Versi (Proyek -> Menu Konteks -> Tim -> Tambahkan ke Kontrol Versi)

Anda akan melihat pesan kesalahan Eclipse berikut:

org.apache.subversion.javahl.ClientException: Entri sudah ada svn: 'PathToYouProject' sudah di bawah kendali versi

Setelah itu Anda harus membuka direktori ruang kerja Anda di explorer Anda, pilih proyek Anda dan selesaikan melalui Tortoise (Proyek -> Menu Konteks -> TortoiseSVN -> Selesaikan)

Anda akan melihat dialog pesan berikut: " Daftar file kosong "

Tekan batal dan segarkan proyek di Eclipse. Proyek Anda harus berada di bawah kendali versi lagi.

Sayangnya, tidak mungkin menyelesaikan lebih dari satu proyek pada waktu yang sama ... Anda tidak perlu menghapus apa pun, tetapi bergantung pada ukuran proyek Anda, ini bisa menjadi sedikit melelahkan.


0

Bagi saya melakukan update svn, diikuti oleh svn commit berhasil. Tidak ada folder .svn di folder yang gagal ditambahkan.

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.