簡體   English   中英

如何批量刪除svn存儲庫中的文件/目錄

[英]How to batch delete files/directories from svn repository

使用:VisualSVN服務器,TortoiseSVN,AnkhSVN

我使用TortoiseSVN為我所有的.NEt項目和我想要保留的源/資源創建初始存儲庫。

我計划在Visual Studio解決方案中使用tortoiseSVN進行所有常規源控制操作和AnkhSVN。

我的問題是我的存儲庫現在有我不需要的開發人員/機器特定的文件/目錄。

我知道,如果您從Visual Studio中將解決方案添加到存儲庫,則使用Microsoft的SCC API不會包含Ankhsvn。

所以我現在需要的是從svn存儲庫批量刪除必要的文件/目錄。

這些包括(但我可以添加更多):

thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk *.msi* .res *.pch *.suo *.exp *.*~ *.~* ~*.* cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj Generated Logs *.csproj.user *.user

我怎么能一個接一個地去做呢?

附加信息:

一個想法是Micha在這里提出的建議,但必須在遷移到存儲庫之前進行。

我總是建議開發人員使用AnkhSVN,而不是在使用VisualStudio項目時使用TortoiseSVN。 AnkhSVN不允許您將私人用戶文件簽入VIsualStudio項目。

要刪除這些文件,您必須簽出存儲庫才能刪除單個文件。 現在有辦法解決這個問題。 抱歉...

首先,您需要一個不應該在Subversion存儲庫中的VisualStudio文件列表。

然后,您應該獲得Subversion客戶端的Windows命令行版本。 你可以從SlikSVN得到這個。 基於命令行的Subverison客戶端將允許您以編程方式刪除不需要的文件,而無需一次一個地刪除它們。

例如,如果您使用Cygwin在Windows系統上提供類似GNU / Linux的環境,您可以執行以下操作:

$ svn checkout $repo-project $workdir
$ find $workdir \( -name "*.suo" -o -name "*.csproj.user" \) -exec svn delete {} \;
$ svn commit -m"Removing all VisualStudio private files from repo" $workdir

或者您可以編寫一個簡短的Perl,Python甚至PowerShell程序來為您執行此操作。

如果您不了解PowerShell,那么在PowerShell中這可能是一個很好的第一個項目。 自XP以來的所有Windows版本都帶有PowerShelL。 PowerShell是一種非常強大的腳本語言 - 比Windows Batch強大得多,甚至比Bash shell腳本更強大。 哎呀,這相當於Python或Perl在腳本方面的實力。 我根本不明白為什么它在基於Windows的開發站點中很少使用。 但是,如果你確實學習了它,你會發現它是各種Windowy東西的強大工具。 PowerShell與Windows注冊表,IIS和各種系統服務集成。

刪除所有這些用戶文件后,您可以使用此Subversion 預提交將其永久保存在Subversion存儲庫之外。 控制文件條目將是這樣的:

[FILE You cannot add private user files into a VisualStudio project]
match = VSproject/.*/\.(suo|user|webinfo|dll|exe)$
access = no-add
users = @ALL

最好的方法是在導入SVN之前在VS中進行清理。

如果文件仍在存儲庫中,我建議進行兩次檢出。 在其中一個打開VS進行清理,然后進行基於文件/目錄的兩個檢出比較(並刪除差異)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM