폴더의 Subversion 컨트롤을 어떻게 제거합니까?


259

나는 폴더를 가지고 c:\websites\test, 그것은 폴더와 것을 더 이상 존재 저장소에서 체크 아웃 된 파일이 포함되어 있습니다. Subversion에서 해당 폴더와 하위 폴더 및 파일 추적을 중지하려면 어떻게해야합니까?

.svn폴더를 간단하게 삭제할 수는 있지만 많은 레이어에 많은 하위 폴더가 있습니다.


1
TortioseSVN을 사용하는 경우 가장 빠른 방법을 보여주는 블로그 게시물을 작성했습니다. 내 게시물에는 사진과 함께 단계별 지침이 있습니다. 이 게시물은 http://www.ecofic.com/about/blog/disconnecting-folder-from-svn
Chad Campbell

많은 도움이 된 내 대답을 참조하십시오. stackoverflow.com/questions/4889619/…
Ajit Vaze

답변:


258

또한 TortoiseSVN을 사용하는 경우 현재 작업중인 사본 위치로 내 보내면 .svn 폴더와 파일이 제거됩니다.

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion

Subversion 1.7에 대한 업데이트 된 답변 :
Subversion 1.7에서 작업 복사본이 광범위하게 개정되었습니다. 작업 복사본의 맨 아래에 .svn 폴더가 하나만 있습니다. 1.7을 사용하는 경우 TortoiseSVN 또는 명령 줄 도구를 사용하지 않고 .svn 폴더와 그 내용을 삭제하는 것이 쉬운 해결책입니다.


8
링크는 이제 404입니다. 새로운 링크 : tortoisesvn.net/docs/release/TortoiseSVN_en/… 현재의 반출 전류는 버전이없는 파일을 유지하려는 경우 .svn 파일 만 제거하는 특별한 경우 인 것 같습니다.
lilbyrdie

정상적인 경우 폴더 아이콘을 다시 가져 오기 위해 성공적으로 제거 한 후 svn 서버를 다시 시작하면됩니다.
3ehrang

서버는 Tortoise 폴더 아이콘과 관련이 없습니다. 그러나 업데이트되지 않으면 TSVNCache 프로세스를 종료 할 수 있습니다. 자동으로 다시 시작해야합니다.
crashmstr 2012

1
내 경우에는 .svn 폴더와 함께 git 폴더도 삭제했습니다.
Aftab Ahmed Kalhoro

155

Linux에서는 다음과 같이 작동합니다.

  find . -iname ".svn" -print0 | xargs -0 rm -r

10
Mac OS에서도 작동합니다.
emish

2
명령을 실행하기 전에 올바른 디렉토리를 입력하십시오. 예 : cd mySVNdirectoryWhereToRemoveTheSubfolders
Camaleo

rm : get operand
Winter

119

svn export를 시도하십시오 .

다음과 같은 작업을 수행 할 수 있어야합니다.

svn export /path/to/old/working/copy /path/to/plain/code

그런 다음 이전 작업 사본을 삭제하십시오.

TortoiseSVN에는 내보내기 기능 도 있으며 동일한 방식으로 작동합니다.


4
명령 행에서 작동하는 답변을 제공해 주셔서 감사합니다. :) 터미널을 사용하는 사람들에게 좋습니다.
epochwolf

16
올바르게 이해하면이 명령은 현재 Subversion 제어하에있는 파일 만 내 보냅니다. 따라서 일부 파일 또는 폴더가 아직 서브 버전에 추가되지 않았거나 서브 버전 제어에서 제거 된 경우 내보내기에서 이러한 파일이 손실됩니다.
Chris

@Chris, 그렇습니다. 버전이 지정된 파일 만 내 보냅니다. 이것은 코드를 내보내고 파생 된 아티팩트 등을 남기는 데 유용하지만 모든 작업에 적합한 도구는 아닙니다.
pkaeding

4
SVN 서버가 오랫동안 사라져도 여전히 작동한다는 의견이 있습니다. VisualSVN 또는 Tortoise SVN을 사용하여 내보내려고하면 서버에 연결하려고하는 것처럼 보이지만 SVN 서버가 계속 실행되지 않고 위의 명령 줄 버전이 작동했습니다.
Dave

오류가 발생합니다 :svn: E000002: Can't stat '/.classpath': No such file or directory
IgorGanapolsky

32

Windows를 실행하는 경우 해당 폴더를 검색하면 해당 폴더가 .svn모두 나열됩니다. Ctrl+ A를 누르면 그것들이 모두 선택되고 delete를 누르면 모든 '성가신'Subversion 것들이 제거됩니다.


정말 성가신 ;-) 그냥 정리하고 새로운 저장소에 다시 넣을 것입니다.
Brian Boatright

2
그것은 심지어 가장 성가신 프론트 페이지 확장 폴더를 삭제하는 좋은 방법입니다!
Brian Boatright

모든 검색 유틸리티를 다운로드하여 사용하여 광속에서 .svn 폴더를 찾아 삭제하십시오 :) voidtools.com Windows 전용!
endo64

23

Linux에서 명령은 다음과 같습니다.

svn delete --keep-local file_name

21

임시 위치로 복사 할 필요조차 없다는 것을 알았습니다. 당신은 할 수 있습니다

svn export --force .

.svn 파일은 현장 에서 제거 되어 다른 파일은 그대로 둡니다. 매우 편리하고 혼란이 적습니다.


4
나는 그것이 무엇인지 모르지만 어떤 이유로 든 작동하지 않았습니다.
양자리 VII

1
이 명령은 폴더 안에있는 폴더가 아니라 작업 복사본에만 작동합니다. 아마도 같은 변종일까요?

2
설치된 Subversion 버전이 1.7이고 리포지토리가 1.6 인 경우에는 작동하지 않습니다. 그러나 내보내기 전에 "svn upgrade"를 실행할 수 있으며 작동합니다.
피터 Mortensen

11

리눅스에서 서브 쉘없이 .svn폴더 를 삭제하기 :

find . -name .svn -exec rm -r -f {} +

rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".

8

이 답변들 중 어느 것도 나의 상황에 만족하지 못했습니다. Subversion 1.8 .svn을 사용하고 있으며 첫 번째 폴더 인 루트에 단일 폴더 만있는 작업 복사본이 있습니다. 그러나 작업 복사본에서 일부 분기를 제거하고 싶었습니다.

내가 한 일에 관계없이 '업데이트'를 실행할 때마다 해당 파일을 복원하고 모두 다시 가져옵니다. 컴퓨터에서 리포지토리에서 제거하고 싶지는 않았지만 나머지 작업 복사본을 그대로 유지해야했습니다 (따라서 .svn 폴더를 제거 할 수는 없었습니다).

해결책? svn update --set-depth exclude <dir>

이것은 특정 디렉토리를 제외하는 클라이언트 측 "업데이트"입니다. svnbook.com 의 매뉴얼에서 찾을 수 있습니다 . 간단히 말해서 이것을 다음과 같이 설명합니다.

Subversion 1.6부터는 다른 접근법을 사용할 수 있습니다. 먼저 전체 디렉토리를 확인하십시오. 그런 다음 상관없는 하나의 서브 디렉토리에서 svn update --set-depth exclude를 실행하십시오.

TortoiseSVN의 경우 원하지 않는 폴더를 마우스 오른쪽 버튼으로 클릭하고을 클릭 Update to revision...한 다음 Exclude이 스크린 샷과 같이 'Update Depth'를로 설정 하여 동일한 작업을 수행 할 수도 있습니다 .

여기에 이미지 설명을 입력하십시오


그러나 작업중인 루트 루트 폴더는 제거 할 수 없습니다.
JaBe

8

그것은 나를 위해 잘 작동했습니다 :

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

이것은 간단한 해결책이지만 매력처럼 작동합니다.
IgorGanapolsky

@IgorGanapolsky 다행입니다. 내 솔루션이 도움이됩니다.
Manikandan S

한 아무도 실행하지 것처럼 mkdir -p ';echo Hi Johnny;/.svn'-이 경우 발견의 {} 호출은 여전히하지만 작동합니다
절대 수면 다시

7

다음 svn export명령을 사용하십시오 .

cd c:\websites\test
svn export c:\websites\test_copy

버전 관리중인 모든 파일이 내보내집니다. 놓친 부분이 없는지 다시 확인하십시오.


4

필요한 폴더 내에서 .svn 폴더를 제거하면 컨트롤이 자동으로 제거됩니다.


3

Windows에서는 탐색기 오른쪽 클릭 메뉴에 빠른 링크를 추가 할 수 있습니다. 이 레지스트리 스크립트를 시작하십시오.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"

[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

그러면 오른쪽 클릭 메뉴에 "SVN 폴더 삭제"라는 항목이 추가됩니다. 이 폴더와 모든 하위 폴더의 모든 .svn 폴더가 삭제됩니다.

출처 (독일어) : http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/


2

svn 데이터없이 해당 폴더의 사본을 작성하기 위해 "svn export"를 사용하거나 해당 폴더를 추가하여 목록을 무시할 수 있습니다.


2

SVN과 함께 NetBeans를 사용하는 경우 'Subversion> Export'옵션이 있습니다.


2

SVN Cleaner 라는 멋진 오픈 소스 도구 가 Windows 탐색기 컨텍스트 메뉴에 세 가지 옵션을 추가합니다.

  • 모든 .svn 제거
  • 루트 이외의 모든 것을 제거하십시오 .svn
  • 로컬 Repo 파일 제거



1

답은 놀라 울 정도로 간단 합니다. 폴더를 자체로 내보내십시오 ! TortoiseSVN은이 특별한 경우를 감지하여 작업 사본을 버전없는 버전으로 만들 것인지 묻습니다. yes로 대답하면 제어 디렉토리가 제거되고 버전이없는 일반 디렉토리 트리가 생성됩니다.


1
이것은 단지 5 년 전에 주어진 대답을 다시 인용하지 않습니까?
Ben Thurley

1

또 다른 (더 간단한) Linux 솔루션 :

rm -r `find /path/to/foo -name .svn`

1

가장 쉽고 쉬운 방법

간단한 마법 명령으로 이길 수 있다고 생각하면 실패합니다! SVN은 정말 까다 롭고 항상 Xcode의 새로운 오류 메시지와 함께 돌아옵니다. 조만간 약속 ... 그래서 당신은 그것을 똑똑해야합니다!

아시다시피 Xcode의 일반적인 모범 사례는 왼쪽의 프로젝트 창에서 파일을 삭제하는 것입니다. 당신이 그것을 놓치고 어떻게 든 Finder에서 그것을 삭제하면 문제가 있습니다. 큰 문제! 그러나 잘하면 해결하고 시간을 절약 할 수 있습니다.

먼저 파일 또는 폴더에 대한 SVN 참조를 삭제해야 실제로 삭제할 수 있습니다

  1. 휴지통에서 파일 / 폴더를 다시 넣거나 삭제할 때 마지막 단계를 취소 할 수 있다면 ...

  2. 터미널로 이동하십시오. 예, 좋은 터미널입니다. 해당 위치로 이동하십시오. 가장 좋은 방법은 cd 를 입력 한 다음 폴더 / 파일을 터미널로 가져 오는 것입니다. 당신은 비슷한 것을 얻을 것입니다

cd / 사용자 / 사용자 이름 / 문서 / Apps_Developing / ...

당신은 당신이 어디에 있는지 확인할 수 있습니다

ls

파일을 나열하는 명령.

  1. 그런 다음 SVN 명령으로 svn 참조를 삭제해야합니다.

    svn delete --keep-local 파일

SVN 저장소에서 파일이 삭제되지만 Finder에서 수동으로 삭제해야합니다.


0

나는 rsync를 사용한다 :

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

0

NetBeans IDE 사용자는 다음과 같이 할 수 있습니다.

  1. IDE에서 SVN 프로젝트를 엽니 다
  2. 프로젝트를 선택하십시오

    Subversion Export를 마우스 오른쪽 단추로 클릭하십시오.

  3. 대화 상자에서

    / var / tmp / projectname 폴더로 내보내기 내보내기 내보내기 대기 완료를 표시하면 즉시 열 것인지 묻습니다.

  4. 이제 Git으로 전환 할 수 있습니다 :)


0

내 생각은 .svn 폴더를 제거한 다음 다른 모든 파일을 새 폴더로 옮기는 것입니다. 그렇게 간단합니다.


0

Windows OS를 사용하는 경우 폴더 위치로 이동하여 숨겨진 파일이 열려 있는지 확인하면 SVN 폴더가 표시됩니다. 해당 폴더를 제거하십시오.


0

svn export 잘 작동하지만 다음과 같습니다.

svn rm --keep-local <folder/file>

로컬 리포지토리에서 제거합니다.


0

중요한 점으로, 을 사용하여 .svn 폴더를 삭제할 때 find 명령이 방금 삭제 된 디렉토리에 들어가서 다음과 같은 오류 메시지를 표시 하지 못하게하려면 -depth 인수가 필요합니다.

"찾기 : ./.svn : 해당 파일 또는 디렉토리 없음"

결과적으로 find다음과 같은 명령을 사용할 수 있습니다 .

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;


0

다음을 사용하십시오.

svn rm --keep-local <folder name> 폴더와 그 안의 모든 것을 제거합니다.

svn rm --keep-local <folder name>/* 폴더를 유지하지만 폴더 내의 모든 것을 제거하십시오.

다음은 발생하는 예입니다.

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json

-1

Windows 10에서는로 이동 Windows Explorer한 다음로 이동 View하여 확인란을 선택해야 View hidden files합니다.

그런 다음 Windows 탐색기에 SVN이 연결된 폴더로 이동하여 .svn폴더 / 파일을 삭제 하십시오.


형식을 편집했지만이 답변은 실제로 질문에 대답하지 않습니다. 사용자는 이미 기본 .svn폴더 를 삭제하는 방법을 알고 있지만 모든 하위 폴더에 대해 묻고 있습니다. 제발 질문을 잘 읽어 보시기 바랍니다.
CodeMouse92
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.