Jika saya memiliki copy pekerjaan dari repositori Subversion, apakah ada cara untuk menghapus semua file tidak berversi atau diabaikan dalam copy pekerjaan itu dengan satu perintah atau alat? Pada dasarnya, saya mencari analog SVN git clean
.
Baik baris perintah atau solusi GUI (untuk TortoiseSVN) akan dapat diterima.
svn
tortoisesvn
ignore
Nick Meyer
sumber
sumber
Jawaban:
Menggunakan TortoiseSVN:
sumber
svn cleanup --remove-unversioned --remove-ignored .
Ini memiliki beberapa fitur berikut:
--xml
opsi dan mengurai keluaran xml yang dihasilkan)svn status
mencetak karakter status lain sebelum nama file (yang seharusnya tidak karena file tidak dilacak, tetapi untuk berjaga-jaga ...)Saya menggunakan skrip shell bernama
svnclean
yang berisi berikut ini:sumber
IFS
kembali seperti sebelumnya. Jika Anda melakukannyaVARNAME=value command
, penetapanvalue
keVARNAME
hanya berlaku selama eksekusicommand
(dengan beberapa pengecualian yang tidak berlaku untukread
). Lihat spesifikasi POSIX dan laporan bug POSIX ini untuk lebih jelasnya.Saya tahu ini sudah lama tetapi jika ada orang lain yang menemukannya, versi yang lebih baru (1.9 atau yang lebih baru) dari dukungan svn
--remove-unversioned
, misalnyasvn cleanup . --remove-unversioned
.https://subversion.apache.org/docs/release-notes/1.9.html#svn-cleanup-options
sumber
svn cleanup . --remove-ignored
Oneliner ini mungkin bisa membantu Anda:
Gunakan dengan hati-hati!
sumber
svn status --no-ignore
untuk menangkap file yang diabaikan dengan baik.Memodifikasi jawaban Yanal-Yves Fargialla dan gimpf menggunakan Powershell (tetapi tidak diizinkan untuk mengomentari kiriman asli oleh Stackoverflow):
Ini menambahkan carat ("^") untuk menentukan awal baris, menghindari pencocokan semua file yang berisi huruf "i". Tambahkan juga tanda untuk -recurse dan -force to rm untuk membuat perintah ini non-interaktif dan dapat digunakan dalam skrip.
sumber
Banyak hal di SVN dapat dilakukan dengan berbagai cara, sebagaimana dibuktikan dengan beragam jawaban baris perintah yang diberikan di sini. Dengan munculnya versi 1.7, ada lagi teknik lain untuk TortoiseSVN yang, pada kenyataannya, menyediakan resolusi butir yang lebih baik daripada jawaban Stefan yang disediakan, membiarkan Anda memilih file non-berversi secara terpisah dari file yang diabaikan. Cukup pilih
TortoiseSvn >> Clean up...
untuk membuka dialog ini.sumber
Dengan PowerShell:
Dari baris perintah:
sumber
-match '[\?i]' -replace '^.{8}'
sebagai gantinya, yang berfungsi dengan benar bahkan jika nama file dimulai dengan spasi, dan juga menghapus file yang diabaikan.code
@ (svn status --no-ignore) -match '[\? I]' -replace '^. {8}' | rm `.powershell -Command "&{(svn status --no-ignore) -match '[\?i]' -replace '^.{8}' | remove-item -force -recurse}"
Oneliner ini berfungsi untuk saya (berdasarkan jawaban Richard Hansen, yang secara mengejutkan tidak berfungsi untuk file yang berisi spasi):
sumber
-fr
kerm
perintah: svn status --no-ignore | grep '^ [I?]' | potong -c 9- | xargs -d "\ n" -I {} rm -fr {}Menggunakan TortoiseSVN:
Bukan solusi yang bagus dan bersih, tetapi cara tercepat yang saya ketahui (di Windows).
Terima kasih kepada pkh untuk tip dengan file yang diabaikan.
sumber
Ini mirip dengan jawaban lain, tetapi sebenarnya mendapatkan file yang diabaikan (perhatikan 'I' di RE):
sumber
Seseorang berkata Anda tidak dapat melakukannya dari baris perintah Windows.
Banteng.
Melakukannya dalam satu baris dan tidak memerlukan alat GNU tunggal. :)
sumber
for /f "tokens=2 delims= " %%I IN ('svn st --no-ignore ^| findstr /R "^[I?]"') DO (DEL /S /F /Q /A:H "%%I" & rmdir /S /Q "%%I")
%%
over%
Anda tidak dapat menghapusnya hanya dengan baris perintah SVN (meskipun tidak yakin tentang alat GUI) jika Anda menggunakan sistem linux, ini mungkin membantu:
http://www.guyrutenberg.com/2008/01/18/delete-unversioned-files-under-svn/
Metode (brutal) lainnya adalah melakukan perubahan, menghapus semua dari folder dan checkout lagi.
sumber