2010-04-15 53 views
4

我正在將VSS存儲庫遷移到SVN,並在第一次簽入時無意中包含了所有_vti_cnf,* .scc文件。我想從SVN中刪除這些。 (當然不是永久的 - 只是在HEAD中)。有問題的應用程序非常龐大,並且逐個文件夾地查找和刪除這些文件將會一直持續下去。SVN使用通配符刪除?

對此提出建議?必須有一些明顯的方法來做到這一點,但週末的接近干擾了我的高等腦功能。

回答

4

喬納斯的答案應該很好。也許你正在發生衝突,因爲你在文件系統級別刪除它們,繞過Subversion的控制?

如果你可以使用TortoiseSVN,以下爲我工作(=我得到的上下文菜單中的必要的命令):

  • 打開搜索窗口
  • 搜索所有不需要的文件
  • 在列表中選擇他們
  • 右鍵單擊
  • 選擇「TortoiseSVN的」>「刪除」
  • 提交更改

完成!

平時免責聲明給人的版本控制的建議時,要小心,有備份,我不接受任何責任等等,等等

+0

有一個大腦問題 - 刪除文件夾,然後試圖刪除它們包含的文件。謝謝。 (整天最簡單的10分,我敢打賭!) – 2010-04-15 17:23:40

1

難道你不能只是grep(或其他找到文件的操作)檢出版本的* .scc文件,刪除它們,然後提交?

+0

您會想,是不是?我已經嘗試過,但由於某種原因它似乎會引入衝突。也許我只是失去了理智。 – 2010-04-15 17:03:38

2

如果您運行的是Linux或Mac OS,你可以用find雖然走了,像

$ find . -type d -name "_vti_cnf" -exec svn delete {} \; 

我不再是SVN用戶(以及從未使用VSS),所以你可能要修改命令行和/或首先嚐試-print

+0

不幸的是,我正在運行Windows。或幸運的是,取決於你的POV。=/ – 2010-04-15 17:08:11

+1

,那將是不幸的;) – 2010-04-15 17:15:31

+0

這會爲你工作? http://mattypenny.blogspot.com/2007/04/dos-equivalent-to-unix-find-name-print.html 'dir/B/S _vti_cnf' 然後將結果複製粘貼到文本編輯器中在每行前添加'svn delete'(例如使用正則表達式) – 2010-04-15 17:17:32

3

在Windows命令提示符下,你可以「爲」執行與遞歸文件搜索和援引「SVN刪除」爲每個匹配的文件,

C:\> for /r %i in (abc*def.sql) do svn delete %i 

注:請記住,在一個批處理文件,你需要用%%更換%I I。

要了解所有你可以使用「爲」其他標誌(它的搜索和分析的瑞士軍刀)使用help命令,

C:\> help for 
0

或者使用PowerShell:

Foreach ($file in Get-Childitem * -include "*.txt") 
{ 
    svn del $file.name 
} 

其中* .txt是通配符,*指定當前目錄在哪裏查找要刪除的文件