Как я могу удалить каталоги SVN после запроса подтверждения? - PullRequest
2 голосов
/ 02 февраля 2010

Я хочу иметь возможность удалять папки .SVN из каталога.

Я нашел следующий взлом реестра, который позволит вам сделать это ...

http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx

Тем не менее, единственное, что мне не нравится в этом решении, это то, что оно вообще не дает подтверждения. Я хотел бы, чтобы он делал то, что делает этот сценарий cmd, но сначала получил запрос подтверждения.

Есть идеи?

EDIT Насколько я понимаю, SVN Export не копирует неверсионные файлы. Вот почему я прошу об этом.

Сет

Ответы [ 6 ]

4 голосов
/ 02 февраля 2010

Вы можете использовать командную строку Subversion и запустить svn export Если вы используете TortoiseSVN, вы можете использовать this .

1 голос
/ 02 февраля 2010

Попробуйте эту модификацию скрипта. Перед запуском удаления каталогов добавляется один запрос:

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 \""
0 голосов
/ 02 февраля 2010

Попробуйте это для команды Powershell для значения reg:

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 'Нажмите enter для выхода'}} "

Удалите -verbose, если вы не хотите видеть удаленные файлы.

0 голосов
/ 02 февраля 2010

Что если вы поместите содержимое скрипта в файл cmd, а затем установите реестр так, чтобы он указывал на этот файл cmd? Затем вы можете добавить различные действия, как в примерах Wikipedia . Я надеюсь, что это поможет вам создать решение.

0 голосов
/ 02 февраля 2010

Если вы вообще используете Perl, у меня есть небольшой скрипт для этого, плюс извлечение других типов dir (удобно для / 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); }
}
0 голосов
/ 02 февраля 2010

Удалите параметр / q в команде RD, скрытой в этом сценарии.

Это должно вызывать каждый вызов rd (удалить директорию), чтобы спрашивать ...

В то же время я бы спросил, почему вы не используете опцию svn export.

...