Tidak ada jawaban di sini yang saya inginkan. Inilah yang saya pikirkan:
# Recursively revert any locally-changed files
svn revert -R .
# Delete any other files in the sandbox (including ignored files),
# being careful to handle files with spaces in the name
svn status --no-ignore | grep '^\?' | \
perl -ne 'print "$1\n" if $_ =~ /^\S+\s+(.*)$/' | \
tr '\n' '\0' | xargs -0 rm -rf
Diuji di Linux; mungkin bekerja di Cygwin, tetapi bergantung pada (saya percaya) ekstensi khusus GNU yang memungkinkan xargs untuk dibagi berdasarkan pada '\0'
bukan spasi putih.
Keuntungan dari perintah di atas adalah tidak memerlukan aktivitas jaringan untuk mereset kotak pasir. Anda mendapatkan apa yang Anda miliki sebelumnya, dan Anda kehilangan semua perubahan Anda . (penafian sebelum seseorang menyalahkan saya untuk kode ini menghancurkan pekerjaan mereka) ;-)
Saya menggunakan skrip ini pada sistem integrasi berkelanjutan di mana saya ingin memastikan build bersih dilakukan setelah menjalankan beberapa tes.
Sunting : Saya tidak yakin ini berfungsi dengan semua versi Subversion. Tidak jelas apakah svn status
perintah selalu diformat secara konsisten. Gunakan dengan risiko Anda sendiri, seperti halnya perintah yang menggunakan rm
perintah selimut .