2010-02-02 6 views
2

디렉토리에서 .SVN 폴더를 제거 할 수 있기를 원합니다. 확인 메시지가 나타나면 어떻게 SVN 디렉터리를 제거 할 수 있습니까?

나는 그냥 그렇게 할 수 있도록 다음 레지스트리 해킹을 발견 ... 그러나

http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx, 나는이 솔루션에 대해 싫어하는 한 가지가 없음 확인서를 제공하지 않는다는 것이다 모든. 이 cmd 스크립트가 수행하는 작업을 수행하고 싶지만 먼저 확인 메시지가 표시됩니다.

아이디어가 있습니까?

편집 내 이해는 SVN 내보내기는 버전없는 파일을 복사하지 않습니다. 그것이 내가 이것을 요구하는 이유입니다.

세스

답변

4

당신은 서브 버전 명령 줄을 사용하고 TortoiseSVN을을 사용하는 경우 svn export를 실행할 수 있습니다, 당신은 this를 사용할 수 있습니다.

+1

래리, 좋은 답변입니다. TortoiseSVN을 사용합니다. 나는 svn Export 명령을 알고 있었다. 내 이해는 SVN 내보내기 unversioned 파일을 복사하지 않습니다. 그것이 내가 묻는 이유입니다. (그리고 그 질문을 명확하게해야했습니다). 그것은 내가 거북이 특징을 알지 못한다고 말했다. 버전없는 파일은 그대로 유지합니까? –

+0

나는 이것을 할 필요가 없었기 때문에 나는 모른다. 알아내는 한 가지 방법은 테스트 작업 복사본을 사용하여 환경에서 테스트하는 것입니다. –

+2

** 모두 내보내기 **를 선택하면 버전없는 파일이 포함됩니다. – RedFilter

0

해당 스크립트에 포함 된 RD 명령에서/q 옵션을 제거하십시오. 대신 svn의 내보내기 옵션을 사용하지 않는 이유를 물어 번째 (디렉토리를 제거)의 각 호출을 야기한다

... 동시에

는하지만, 물어 것입니다. 전혀 펄을 사용하는 경우

0

, 여기에 (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

무슨 경우 스크립트의 내용을 cmd 파일에 넣은 다음이 cmd 파일을 가리 키도록 레지스트리를 설정하십시오. 그런 다음 예제와 같이 다양한 작업을 Wikipedia에 추가 할 수 있습니다. 이것이 솔루션을 만드는 데 도움이되기를 바랍니다.

1

스크립트 수정을 시도하십시오. 이 디렉토리 삭제를 실행하기 전에 하나의 프롬프트를 추가

C :

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

이것은 작동하지 않았습니다. 그냥 묻지도 않고 달렸다. 나는 그 생각을 좋아한다. 이것은 내가 원하는 것입니다. –

+0

내놔, 내가 시험해 볼게. – RedFilter

+0

구문은 실행중인 Windows 버전에 크게 의존하는 것 같습니다. 그래서 포기했습니다. :) – RedFilter

0

는 등록 값에 대한 PowerShell 명령이 시도 \ WINDOWS \ SYSTEM32 \의 WindowsPowerShell \ V1.0의 \의 powershell.exe를 - 명령 "& {((읽기 호스트 '.SVN 폴더 삭제 확인. Y 또는 N'을 누름) -eq 'y') {Get-ChildItem '% 1'-r * .svn |? {$ _. PSIsContainer }} - 제거 - 항목 -r -force -verbose -ea 0; 읽기 - 호스트 'Enter 키를 눌러 종료하십시오'}} "

삭제 된 파일을 보지 않으려면 -verbose를 제거하십시오.