如何批量删除svn存储库中的文件/目录

e4r*_*dog 5 svn tortoisesvn ankhsvn visualsvn-server

使用: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
Run Code Online (Sandbox Code Playgroud)

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

附加信息:

一个想法是Micha在这里提出的建议,但必须在迁移到存储库之前进行.

Dav*_* W. 4

我总是建议开发人员在使用 VisualStudio 项目时使用 AnkhSVN 而不是使用 TortoiseSVN。AnkhSVN 不允许您将私人用户文件签入您的 VIsualStudio 项目。

要删除这些文件,您必须签出存储库才能删除单个文件。现在有办法解决这个问题。对不起...

首先,您需要一个不应位于 Subversion 存储库中的VisualStudio 文件列表。

然后,您应该获得 Windows 命令行版本的 Subversion 客户端。您可以从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
Run Code Online (Sandbox Code Playgroud)

或者您可以编写一个简短的 Perl、Python 甚至 PowerShell 程序来为您完成此操作。

如果您不了解 PowerShell,那么这可能是在 PowerShell 中完成的第一个项目。自 XP 以来的所有 Windows 版本都附带 PowerShellL。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
Run Code Online (Sandbox Code Playgroud)