确认提示后如何删除 SVN 目录?
Posted
技术标签:
【中文标题】确认提示后如何删除 SVN 目录?【英文标题】:How can I remove SVN directories after a confirmation prompt? 【发布时间】:2011-01-12 05:09:44 【问题描述】:我希望能够从目录中删除 .SVN 文件夹。
我发现以下注册表黑客可以让您这样做...
http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx
但是,我不喜欢这个解决方案的一件事是它根本不提供任何确认。我希望它做这个 cmd 脚本所做的事情,但首先得到一个确认提示。
有什么想法吗?
编辑 我的理解是 SVN Export 不会复制出未版本控制的文件。这就是我要求这个的原因。
赛斯
【问题讨论】:
【参考方案1】:你可以使用Subversion命令行并运行svn export
如果你使用的是TortoiseSVN,你可以使用this。
【讨论】:
拉里,很好的答案。我确实使用 TortoiseSVN。我知道 svn Export 命令。我的理解是 SVN Export 不会复制未版本控制的文件。这就是我要问的原因(并且应该在问题中更清楚)。那就是说我不知道乌龟功能。这会使未版本化的文件完好无损吗? 我不需要这样做,所以我不知道。找出答案的一种方法是在您的环境中使用测试工作副本进行尝试。 如果您选择全部导出,它将包括未版本化的文件。【参考方案2】:试试这个脚本的修改。它在运行目录删除之前添加了一个提示:
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 \""
【讨论】:
这不起作用。没有提示就跑了。不过我喜欢这个主意。这正是我想要的。 语法似乎高度依赖于您运行的 Windows 版本,所以我放弃了...... :)【参考方案3】:删除隐藏在该脚本中的 RD 命令上的 /q 选项。
这应该会导致每次调用 rd(删除目录)都询问...
不过,与此同时,我想问你为什么不使用 svn 导出选项。
【讨论】:
【参考方案4】:如果你把脚本的内容放到 cmd 文件中,然后设置注册表让它指向这个 cmd 文件呢?然后,您可以添加各种操作,例如 Wikipedia 的示例。我希望这可以帮助您创建解决方案。
【讨论】:
【参考方案5】:如果你完全使用 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);
【讨论】:
【参考方案6】:对 reg 值的 Powershell 命令试试这个:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& if ((read-host '确认删除 .SVN 文件夹。按 Y 或 N') -eq 'y') Get-ChildItem '%1' -r *.svn | ?$_.PSIsContainer | Remove-Item -r -force -verbose -ea 0; Read-Host 'Press enter to exit' "
如果您不想看到已删除的文件,请删除 -verbose。
【讨论】:
以上是关于确认提示后如何删除 SVN 目录?的主要内容,如果未能解决你的问题,请参考以下文章
svn如何删中文目录. 中文目录结构,UNICODE, 目录下建了(中文)文件.删除时路径无法解析.
项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗__@RequestBody和@ResponseBody结合使用_全选功能_前端获取id发到后端_ajax发送
项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗__@RequestBody和@ResponseBody结合使用_全选功能_前端获取id发到后端_ajax发送