我希望能够从目录中删除.SVN文件夹。
我发现以下注册表黑客可以让你做到这一点......
http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx
然而,我不喜欢这个解决方案的一件事是它根本没有给出任何确认。我希望它能够执行此cmd脚本的功能,但首先会获得确认提示。
有什么想法吗?
修改 我的理解是SVN Export不会复制出未版本控制的文件。这就是我要求的原因。
赛斯
答案 0 :(得分:4)
您可以使用Subversion命令行并运行svn export
如果您使用的是TortoiseSVN,则可以使用this。
答案 1 :(得分:1)
尝试修改脚本。它在运行目录删除之前添加了一个提示:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && choice /m "Remove SVN folder" && if ERRORLEVEL 2 goto done && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" && :done \""
答案 2 :(得分:0)
删除隐藏在该脚本中的RD命令的/ q选项。
这应该导致每次调用rd(删除目录)来询问...
但与此同时,我会问你为什么不使用svn导出选项。
答案 3 :(得分:0)
如果你完全使用Perl,这里有一个我用来做这个的小脚本,再加上其他目录类型(方便的/ bin,等等......来自VS):
#!/usr/local/bin/perl -w
#-------------------------------------------------------------------------------
# removedirs.pl - Recursively removes directories from a given root folder
# Author: Nick Gotch
# Date: 07-13-2009
#-------------------------------------------------------------------------------
use strict;
use warnings;
use File::Path;
#-------------------------------------------------------------------------------
# User Setting Variables
#-------------------------------------------------------------------------------
my $basepath = 'C:\\Path\\to\\RootDir\\';
#-------------------------------------------------------------------------------
# Processing
#-------------------------------------------------------------------------------
# Prompt for Confirmation
syswrite(STDOUT, "Confirm removal of directories?\nPress 'Y' to confirm.\n");
$confirm = <STDIN>;
if($confirm =~ /^[Yy]$/)
{
# Add lines here to remove other dirs...
RemoveDir($basepath, ".svn");
syswrite(STDOUT, "Done.\nPress <ENTER> to close.\n");
}
<STDIN>;
sub RemoveDir
{
my ($directory, $dirtodelete) = @_;
if(-e $directory.'\\'.$dirtodelete.'\\')
{
rmtree($directory.$dirtodelete.'\\');
syswrite(STDOUT, "Removed: ".$directory.$dirtodelete.'\\'."\n");
}
opendir(DIR, $directory);
my @subdirlist;
while(my $subdir = readdir(DIR))
{
if(($subdir ne '.') && ($subdir ne '..') && (-d $directory.$subdir))
{
push(@subdirlist, $directory.$subdir.'\\');
}
}
closedir(DIR);
foreach my $subdir (@subdirlist) { RemoveDir($subdir, $dirtodelete); }
}
答案 4 :(得分:0)
如果您将脚本的内容放入cmd文件,然后设置注册表以使其指向此cmd文件,该怎么办?然后,您可以添加各种操作,例如Wikipedia中的示例。我希望这可以帮助您创建解决方案。
答案 5 :(得分:0)
尝试使用此值作为reg值的Powershell命令:
C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -Command“&amp; {if((读取主机'确认删除.SVN文件夹。按Y或N')-eq'y' ){Get-ChildItem'%1'-r * .svn |?{$ _.PSIsContainer} | Remove-Item -r -force -verbose -ea 0; Read-Host'按enter键退出'}}“
如果您不想删除文件,请删除-verbose。