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



使用:VisualSVN服务器、TortoiseSVN、AnkhSVN

我使用TortoiseSVN为我的所有文件加载了一个初始存储库。NEt项目和我想保留的支持来源/资源。

我计划将turtoiseSVN用于所有常规源代码管理操作,将AnkhSVN用于Visual Studio内的解决方案。

我的问题是,我的存储库现在有我不需要的开发人员/机器特定的文件/目录。

我知道,如果您从Visual Studio中将解决方案添加到存储库中,则使用Microsoft的SCC API的Anksvn不包括它们。

因此,我现在需要的是执行batch从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在这里提出的,但这必须在转移到存储库之前实现。

我总是建议开发人员在使用VisualStudio项目时使用AnkhSVN,而不要使用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并进行清理,然后对两个签出进行基于文件/目录的比较(并删除差异(。

最新更新