如何使用svn
命令行工具從SVN簽出中刪除所有未跟蹤的文件? Git和Hg爲此提供了clean
和purge
命令,但我在SVN中找不到相應的命令。如何刪除SVN中的未跟蹤文件
我不在乎是否必須恢復所有本地修改(在這種情況下本質上是想將我的結帳恢復到原始狀態)還是本地修改被跟蹤的文件可以保持不變;任何情況都是可以接受
如何使用svn
命令行工具從SVN簽出中刪除所有未跟蹤的文件? Git和Hg爲此提供了clean
和purge
命令,但我在SVN中找不到相應的命令。如何刪除SVN中的未跟蹤文件
我不在乎是否必須恢復所有本地修改(在這種情況下本質上是想將我的結帳恢復到原始狀態)還是本地修改被跟蹤的文件可以保持不變;任何情況都是可以接受
有可能是內置的方式,但如果是這樣,我不知道它。然而,像下面應該做的工作:(所有版本的文件,應該出現在一個svn st
與?
開頭的行)
svn st | grep '^?' | awk '{print $2}' | xargs rm -rf
EDIT(@GearoidMurphy) 這是具有挑戰性的獲得這段代碼在cygwin環境下工作,因爲xargs將windows路徑斜線視爲轉義序列,並且無法解析'\ r \ n'行結尾,下面是我對這個完全有效答案的改編解決方案:
svn st | grep '^?' | gawk '{printf(\"%s|\", $2)}' | xargs -d "|" -n1 C:\cygwin\bin\rm -r
是的,我想這可能不得不做,雖然它非常難看,並且需要一些額外的非SVN工具。 –
這不考慮忽略的文件,所以你可能還需要'--no-ignore'標誌到'svn st' –
另外我認爲這可能會失敗的文件名包含空格 –
svn-clean腳本正是這樣做的,儘管它確實依賴於安裝了perl。它會使本地修改保持不變,但會刪除被忽略的文件。使用'-p'運行以預覽將被刪除的文件。
這個命令應該做的工作,空格和所有(試穿OSX只):
svn status | grep '^\?' | sed 's/? *//' | xargs -I% rm -fr %
的可能重複[我怎樣才能刪除我的工作拷貝所有未版本控制/忽略的文件/文件夾?](HTTPS ://stackoverflow.com/questions/2803823/how-can-i-delete-all-unversioned-ignored-files-folders-in-my-working-copy) – Ruslan
@Ruslan:即使我的問題不是關於TortoiseSVN ,是的,這基本上是一樣的。 –