Bagaimana Anda menghapus kontrol Subversion untuk folder?

259

Saya memiliki folder,, c:\websites\testdan berisi folder dan file yang diperiksa dari repositori yang tidak ada lagi. Bagaimana cara saya membuat Subversion berhenti melacak folder itu dan semua subfolder dan file?

Saya tahu saya bisa menghapus .svnfolder itu, tetapi ada banyak sub-folder di banyak layer.

Brian Boatright
sumber
1
Jika Anda menggunakan TortioseSVN, saya menulis posting blog yang menunjukkan cara tercepat untuk melakukan ini. Posting saya memiliki petunjuk langkah demi langkah dengan gambar. Kiriman itu tersedia di http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell
Lihat jawaban saya yang telah membantu banyak orang. stackoverflow.com/questions/4889619/…
Ajit Vaze

Jawaban:

258

Juga, jika Anda menggunakan TortoiseSVN, cukup ekspor ke lokasi copy pekerjaan saat ini dan itu akan menghapus folder dan file .svn.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Jawaban yang Diperbarui untuk Subversi 1.7:
Dalam Subversi 1.7 copy pekerjaan telah direvisi secara luas. Hanya ada satu folder .svn, yang terletak di dasar copy pekerjaan. Jika Anda menggunakan 1.7, maka hanya menghapus folder .svn dan isinya adalah solusi yang mudah (terlepas dari menggunakan TortoiseSVN atau alat baris perintah).

crashmstr
sumber
8
Tautan sekarang menjadi 404. Tautan baru: tortoisesvn.net/docs/release/TortoiseSVN_en/… Ekspor-over-saat ini tampaknya hanya kasus khusus yang hanya menghapus file .svn jika Anda juga menyimpan file tidak berversi.
lilbyrdie
setelah berhasil menghapus untuk mendapatkan kembali ikon folder Anda di normal restart svn server dan itu saja
3ehrang
Server tidak akan ada hubungannya dengan ikon folder Tortoise. Tetapi jika mereka tidak memperbarui Anda dapat mencoba membunuh proses TSVNCache. Seharusnya restart secara otomatis.
crashmstr
1
Dalam kasus saya, saya menghapus folder git juga bersama dengan folder .svn
Aftab Ahmed Kalhoro
155

Di Linux, ini akan berfungsi:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Max Cantor
sumber
10
Bekerja di Mac OS juga.
emish
2
sebelum menjalankan perintah, pastikan untuk masuk ke direktori yang tepat, contoh: cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo
Saya mendapatkan rm: operan yang hilang
Musim Dingin
119

Coba ekspor svn .

Anda harus dapat melakukan sesuatu seperti ini:

svn export /path/to/old/working/copy /path/to/plain/code

Dan kemudian hapus saja copy pekerjaan lama.

TortoiseSVN juga memiliki fitur ekspor , yang berperilaku sama.

pkaeding
sumber
4
Terima kasih telah memberikan jawaban yang berfungsi dengan baris perintah. :) Bagus untuk kita yang menggunakan terminal.
epochwolf
16
Jika saya mengerti dengan benar, perintah ini hanya akan mengekspor file yang saat ini berada di bawah kendali subversi. Jadi jika beberapa file atau folder belum ditambahkan ke subversi atau dihapus dari kontrol subversi, Anda akan kehilangan file-file ini dalam ekspor Anda ...
Chris
@ Chris, ya, Anda benar. Ini hanya akan mengekspor file yang diversi. Ini bagus untuk mengekspor kode, dan meninggalkan artefak turunan, dll, tetapi itu mungkin bukan alat yang tepat untuk setiap pekerjaan.
pkaeding
4
Layak komentar bahwa ini TIDAK masih berfungsi jika server SVN sudah lama hilang; jika Anda mencoba untuk mengekspor menggunakan VisualSVN atau Tortoise SVN tampaknya mencoba untuk menghubungi server, tetapi versi baris perintah di atas berfungsi untuk saya tanpa server SVN masih berjalan.
Dave
Saya mendapatkan kesalahan:svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky
32

Jika Anda menjalankan Windows maka Anda dapat melakukan pencarian pada folder itu .svndan yang akan mendaftar semuanya. Menekan Ctrl+ Aakan memilih semuanya dan menekan delete akan menghapus semua hal Subversion 'sial'.

graham.reeds
sumber
sial memang ;-) Saya hanya perlu membersihkannya dan saya akan mengembalikannya ke repositori baru.
Brian Boatright
2
itu juga cara HEBAT untuk menghapus folder ekstensi halaman depan yang bahkan paling sial!
Brian Boatright
Unduh dan gunakan utilitas Pencarian Segalanya untuk menemukan & menghapus folder .svn dengan kecepatan ringan :) voidtools.com Hanya Windows!
endo64
23

Di Linux perintahnya adalah:

svn delete --keep-local file_name
bunteKnete
sumber
21

Saya menemukan bahwa Anda bahkan tidak perlu menyalin ke lokasi sementara. Anda bisa melakukan

svn export --force .

dan file .svn akan dihapus in situ , meninggalkan file lain apa adanya. Sangat nyaman dan tidak mudah berantakan.

IJ Kennedy
sumber
4
Saya tidak tahu apa itu, tetapi itu tidak berhasil untuk beberapa alasan.
Aries VII
1
Perintah ini hanya berfungsi untuk copy pekerjaan, bukan folder di dalamnya. Mungkin varian yang sama ...?
2
Ini tidak akan berfungsi jika versi Subversion yang terinstal adalah 1.7 dan repositori untuk 1.6. Namun, "peningkatan svn" dapat dijalankan sebelum ekspor dan akan berfungsi.
Peter Mortensen
11

Tanpa subkulit di Linux untuk menghapus .svnfolder:

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
pengguna1439712
sumber
8

Tidak ada jawaban yang memuaskan untuk situasi saya. Saya menggunakan subversi 1.8 dan saya memiliki copy pekerjaan yang hanya memiliki satu .svnfolder di folder pertama, root. Namun, saya ingin menghapus beberapa cabang dari copy pekerjaan.

Apa pun yang saya lakukan, setiap kali saya menjalankan 'pembaruan' itu akan mengembalikan file-file itu dan mengembalikan semuanya. Saya tidak ingin menghapusnya dari repositori, hanya dari komputer saya - tetapi saya perlu menjaga sisa copy pekerjaan dalam kebijaksanaan (sehingga tidak bisa hanya menghapus folder .svn).

Larutan? svn update --set-depth exclude <dir>

Ini adalah "pembaruan" sisi klien yang mengecualikan direktori tertentu. Itu dapat ditemukan di manual di svnbook.com . Singkatnya, ini menggambarkan ini sebagai:

Dimulai dengan Subversion 1.6, Anda dapat mengambil pendekatan yang berbeda. Pertama, periksa direktori secara penuh. Kemudian jalankan pembaruan svn --set-depth kecuali pada satu subdirektori yang tidak Anda pedulikan.

Untuk TortoiseSVN, Anda juga dapat melakukan hal yang sama dengan mengklik kanan folder yang tidak Anda inginkan, klik Update to revision..., dan kemudian tetapkan 'Perbarui Kedalaman' Exclude, seperti yang terlihat dalam cuplikan layar ini:

masukkan deskripsi gambar di sini

brazilianldsjaguar
sumber
Anda tidak dapat menghapus folder copy root yang berfungsi.
JaBe
8

Ini bekerja dengan baik untuk saya:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Manikandan S
sumber
Ini adalah solusi yang sederhana, namun bekerja seperti pesona.
IgorGanapolsky
@IgorGanapolsky saya senang. Solusi saya membantu Anda.
Manikandan S
selama tidak ada yang menjalankan mkdir -p ';echo Hi Johnny;/.svn'- dalam hal ini {} permohonan find masih tetap bekerja
Never Sleep Again
7

Gunakan svn exportperintah:

cd c:\websites\test
svn export c:\websites\test_copy

Semua file di bawah kontrol versi akan diekspor. Periksa ulang untuk memastikan Anda tidak melewatkan sesuatu.

INFORMASI 1800
sumber
4

Cukup hapus folder .svn di dalam folder yang diperlukan maka kontrol akan otomatis dihapus.

Ramudu
sumber
3

Di Windows, Anda dapat menambahkan tautan cepat ke tautan itu ke menu klik kanan penjelajah Anda. Mulai saja skrip registri ini:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

Ini akan menambahkan item yang disebut "Hapus Folder SVN" ke menu klik kanan Anda. Ini akan menghapus semua folder .svn di folder ini dan semua subfolder.

Sumber (Jerman): http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

Tobias
sumber
2

Anda dapat menggunakan "ekspor svn" untuk membuat salinan folder itu tanpa data svn, atau Anda dapat menambahkan folder itu untuk mengabaikan daftar

andy.gurin
sumber
2

Bagi mereka yang menggunakan NetBeans dengan SVN, ada opsi 'Subversion> Ekspor'.

Ladik
sumber
2

Ada juga alat open source kecil yang bagus yang disebut SVN Cleaner yang menambahkan tiga opsi ke Menu Konteks Windows Explorer:

  • Hapus Semua .svn
  • Hapus All But Root .svn
  • Hapus File Repo Lokal
Martin Buberl
sumber
2

Pada Windows 7 kita dapat membuka folder proyek dan melakukan pencarian ".svn" jika file tersembunyi diaktifkan dan hapus semua folder .svn yang ditemukan.

Tidak dikenal_Beli
sumber
1
Menangkan Win XP yang berfungsi dengan baik juga. Perhatikan bahwa dengan SVN 1.7 .svndirektori tidak lagi tersebar di mana-mana. Untuk perincian lebih lanjut, periksa subversion.apache.org/docs/release-notes/1.7.html#wc-ng
Joao Coelho
1

Jawabannya sangat sederhana - ekspor folder itu sendiri ! TortoiseSVN mendeteksi kasus khusus ini dan menanyakan apakah Anda ingin membuat copy pekerjaan tidak berversi. Jika Anda menjawab ya direktori kontrol akan dihapus dan Anda akan memiliki pohon direktori polos, tidak berversi.

Srikanth
sumber
1
Bukankah ini hanya mengutip ulang jawaban yang diterima yang diberikan 5 tahun yang lalu?
Ben Thurley
1

Solusi Linux lainnya (lebih sederhana):

rm -r `find /path/to/foo -name .svn`
Dougvj
sumber
1

CARA TERBAIK DAN TERMUDAH

Jika Anda berpikir bahwa Anda bisa menang dengan perintah sihir sederhana, Anda gagal! SVN benar-benar rumit dan selalu kembali entah bagaimana dengan pesan kesalahan baru di Xcode. Cepat atau lambat, berjanjilah ... jadi Anda harus melakukannya dengan cerdas!

Seperti yang Anda ketahui praktik reguler dan terbaik di bawah Xcode menghapus file pada panel proyek di sebelah kiri. Jika Anda melewatkannya dan entah bagaimana menghapusnya di Finder, Anda dalam masalah. Masalah besar! Tapi Anda bisa menyelesaikannya dan meluangkan waktu jika Anda melakukannya dengan baik.

Pertama, Anda perlu menghapus referensi SVN ke file atau folder sebelum Anda bisa menghapusnya sebenarnya

  1. Jika Anda bisa mengembalikan file / folder dari tempat sampah atau membatalkan langkah terakhir ketika Anda menghapusnya, maka ...

  2. Pergi ke Terminal - ya, terminal lama yang bagus - dan pergi ke lokasi itu. Cara terbaik ketik saja cd lalu tarik folder / file ke Terminal. Anda akan mendapatkan yang serupa

cd / Pengguna / Nama Pengguna / Dokumen / Apps_Developing / ...

Anda dapat memeriksa di mana Anda berada

ls

perintah yang daftar file Anda.

  1. Maka Anda perlu menghapus referensi svn dengan perintah SVN:

    svn hapus --keep-local fileName_toDelete

Ini akan menghapus file dari repositori SVN, TETAPI Anda harus menghapusnya secara manual di Finder.

Pembuat sepatu
sumber
0

Saya menggunakan rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped
yeeking
sumber
0

Pengguna NetBeans IDE dapat melakukannya seperti di bawah ini:

  1. Buka proyek SVN di IDE Anda
  2. Pilih proyek

    klik kanan Ekspor Subversion

  3. Di kotak dialog

    ekspor ke folder / var / tmp / projectname tekan ekspor tunggu akan menunjukkan lengkap akan bertanya apakah Anda ingin membukanya lakukan terbuka dengan cepat

  4. Anda sekarang dapat beralih ke Git :)

Peter Mortensen
sumber
0

Ide saya adalah menghapus folder .svn dan kemudian memindahkan semua file lainnya ke folder baru. Sesederhana itu.

Alvin567
sumber
0

Ketika Anda menggunakan OS Windows, pergi ke lokasi folder Anda dan periksa file tersembunyi terbuka, dan kemudian Anda dapat melihat folder SVN di sana. Hapus saja folder itu.

dush88c
sumber
0

svn export berfungsi dengan baik, tapi saya pikir ini adalah:

svn rm --keep-local <folder/file>

Itu menghapusnya dari repositori lokal Anda.

Javier Salinas
sumber
0

Sebagai titik vital, ketika Anda menggunakan shell untuk menghapus folder .svn, Anda memerlukan argumen -depth untuk mencegah perintah find memasuki direktori yang baru saja dihapus dan menampilkan pesan kesalahan seperti mis.

"find: ./.svn: Tidak ada file atau direktori"

Sebagai hasilnya, Anda dapat menggunakan findperintah seperti di bawah ini:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
fatihk
sumber
0

Dari baris perintah Windows:

rmdir .svn /s /q
Michael Ross
sumber
0

Gunakan yang berikut ini:

svn rm --keep-local <folder name> untuk menghapus folder dan semua yang ada di dalamnya.

svn rm --keep-local <folder name>/* untuk menyimpan folder, tetapi hapus semua yang ada di dalam folder.

Ini adalah contoh dari apa yang terjadi:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json
Ryan
sumber
-1

Pada Windows 10, kita harus pergi ke Windows Explorer, dan kemudian pergi ke Viewdan centang kotak centang untukView hidden files .

Kemudian arahkan ke folder yang memiliki SVN ditautkan pada Windows Explorer dan hapus .svnfolder / file.

Praseeda
sumber
Meskipun saya mengedit format, jawaban ini sebenarnya tidak menjawab pertanyaan. Pengguna sudah tahu cara menghapus .svnfolder dasar , tetapi ia bertanya tentang semua sub-folder. Silakan baca pertanyaan dengan seksama.
CodeMouse92