Subversion에서 차단 된 폴더


131

Subversion에 체크인 할 때 "폐쇄 된"도대체 무엇을 의미합니까? 텍스트 상태가 "폐쇄 됨"인 두 개의 폴더가 빨간색으로 표시됩니다. 문서의 어느 곳에서 이것이 의미하는 바를 알 수 없습니다.

cleanup명령을 시도하면 "폴더 이름이 작업 디렉토리가 아닙니다"라는 메시지가 나타납니다. 이것은 VS에서 방금 만든 폴더이며 Subversion에 추가하려고하면 해당 오류가 발생합니다. 다른 모든 폴더는 괜찮습니다.


추가 작업에서 '폐쇄'됩니까?
Sander Rijken

답변:


113

SVN 명령을 거치지 않고 .svn 서브 디렉토리를 삭제하거나 이동할 때 발생하므로 SVN은 작업 사본의보기를 손상시킵니다.

먼저 정리를 시도한 후에도 해결되지 않으면 디렉토리를 되돌 리거나 업데이트하여 하위 디렉토리 .svn 폴더를 복원하십시오.


1
기묘한. 나는이 폴더를 체크 아웃해야했습니다. 폴더는 이전에 저장소에 존재했습니다. 그런 다음 svn delete 명령을 사용하지 않고 삭제했습니다. 다시 확인하고 커밋함으로써 문제가 해결되었습니다. 그런 다음 이름을 바꾸지 않고 삭제하고 편집 만 한 다른 .css 파일에서 svn 업데이트를 수행해야했습니다 (다른 메시지).
PositiveGuy

1
좋은 신, 나는 내 로컬 드라이브의 작업 사본이 아니라 내 외부 드라이브에있는이 프로젝트의 사본을 기반으로 커밋하려고했습니다. 어.
PositiveGuy

8
디렉토리를 한 곳에서 다른 곳으로 옮기고 SVN 이동 명령을 사용하지 않는 경우에 종종 발생합니다. 숨겨진 .svn 파일도 함께 이동하지만 업데이트되지는 않습니다. .svn 파일을 삭제하면 문제가 해결됩니다.
user85259

1
이것은 Windows 탐색기가 아닌 Visual Studio 2008을 사용하여 폴더를 다른 폴더로 복사하여 전체 폴더를 옮길 때 발생했습니다.
MacGyver

2
내가 해결 한 방법은 방해 된 폴더에서 내 파일을 내 보내서 파일을 잃지 않도록하는 것입니다. 그러면 방해 된 폴더 위의 폴더를 클릭하고 되돌리기를 클릭 한 다음 방해 된 폴더를 제외한 모든 항목을 선택 취소하고 방해 된 파일을 되돌 렸습니다 .svn 파일의 내용에서 해당 폴더를 추출합니다. 그런 다음 이전에 차단 된 폴더를 내 보낸 파일과 함께 다시 추가하고 다시 추가했습니다.
MacGyver

9

원인이 무엇인지 모르는 경우 해결책은 작업 복사본 (로컬에있는 전체 체크 아웃)을 다른 곳으로 내보내는 것입니다.

tortoisesvn을 사용하는 경우 "버전이없는 파일 내보내기"옵션이 있지만 명령 줄에서 버전 버전 파일 만 내 보내면 버전이없는 파일을 수동으로 복사하는 데 많은 노력이 필요합니다 .

완료되면 깨끗한 작업 복사본을 확인한 다음 내 보낸 백업을 맨 위에 놓습니다. 백업에 .svn 폴더가없는 것이 매우 중요합니다.

사람들이 다른 작업 복사본 또는 .svn 항목을 손상시키는 다른 작업 복사본에서 작업 복사본을 체크 아웃하기 전에이 오류를 보았습니다.


그것은 나를 위해 그것을 고쳤다. 감사!
Patrick

11
해결책은 SVN을 쓰레기통에 넣고 쓰레기가 아닌 버전 제어 시스템으로 전환하는 것입니다. 죄송합니다. 방금 좌절했습니다.
Phil Hale

5

같은 문제가 있었고 다음과 같이 수정했습니다.

  • 막힌 디렉토리 이름을 바꿨습니다.
  • SVN에서 원래 이름으로 디렉토리를 생성했습니다 (예 : svn mkdir)
  • 부모 폴더를 업데이트하여 새로 작성된 디렉토리가 작업 사본에 나타납니다.
  • 차단 된 파일을 새로 생성 된 디렉토리로 복사하여 커밋

4

* nix 시스템을 사용하는 경우 파일을 작성하지 않았는지 확인하고 SVN에 추가 한 후 삭제하여 동일한 이름의 폴더로 바꾸십시오. OP에 도움이되지는 않지만 누군가에게 많은 스트레스를 덜어주기를 바랍니다.


1

이는 어떤 이유로 조작 중에 충돌이 발생했음을 의미합니다. 버전이없는 파일이나 이름이 같은 기존 버전이없는 파일이나 폴더가 있는지 확인하십시오.

(Tortoise SVN 클라이언트 도움말 파일에서 그래프로 표시됨)


1

아무것도 나를 위해 일하지 않았으므로 다음을 수행했습니다.

  • 버전이 지정되지 않은 파일과 함께 새 위치로 내보내기
  • 기존 폴더의 이름을 바꿨습니다.
  • 프로젝트의 내보내기 위치에서 폴더를 옮겼습니다.
  • 새 폴더의 이름을 바꿨습니다
  • 추가, 커밋
  • 이름이 바뀐 이전 폴더를 제거했습니다.
  • 새 폴더의 이름을 바꿨습니다
  • 범하다

1

이 상황을 유발할 수있는 시나리오에는 여러 가지 변형이 있습니다. 다음은 하나의 예입니다.

나는 결국! 'svn rename'명령을 사용하지 않고 www에서 www_a로 이름이 변경된 디렉토리에 표시하십시오.

  1. 원래 이름이있는 현재 디렉토리의 이름을 바꾸십시오 (예 : www_b).
  2. www_a의 이름을 www로 다시 변경
  3. www 디렉토리 내에서 'svn update'또는 'svn revert'를 수행하십시오
  4. 'svn delete'를 사용 하지 않고 최신 www 디렉토리 삭제하십시오.
  5. 상위 디렉토리로 이동하여 'svn update'를 발행하십시오.
  6. 이것은 원래 www 디렉토리를 복원합니다
  7. 이번에는 'svn rename'을 사용하여 www의 이름을 www_a로 바꿉니다.
  8. www_b의 이름을 www로 다시 변경
  9. 'svn add'를 사용하여 저장소에 추가하십시오.

이 시점에서 올바른 svn 작업 디렉토리를 가져와야합니다. 그리고 svn 디렉토리 혼란을 해결하는 방법에 대해 배우십시오.


1

Windows 시스템에서이 문제에 직면했습니다.

내가 속한 전체 프로젝트를 체크 아웃하기 전에 디렉토리를 체크 아웃했습니다. 그것은 나를 위해 '폐쇄 된'문제를 일으켰습니다.

단순히 해당 폴더를 삭제하고 (해당 폴더의) 루트에서 업데이트를 실행했습니다. 잘 작동했습니다.

정리 등의 명령이 작동하지 않았습니다.

주의 사항 :

  1. 폴더가 크면 비용이 많이 듭니다.
  2. 변경 사항이 있으면 모든 변경 사항을 잃게됩니다.

모두 제일 좋다.


1

리포지토리 디렉토리에 대한 심볼릭 링크를 만들었을 때 Windows에서도 이것을 보았습니다. 이 경우 리포지토리 루트는 "폐쇄"된 것으로 나타납니다. 그러나 이것은 아무런 영향을 미치지 않는 것 같습니다.

재현 단계 :

  1. 레포 확인

    svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir
    
  2. 디렉토리가 정상인지 확인하십시오

    cd plugin_dir
    svn st -u
    

    출력은

    Status against revision: 1234
    
  3. 심볼릭 링크 만들기 (문제가 있음)

    cd ..
    mklink /d link_dir plugin_dir
    cd link_dir
    svn st -u
    

    출력은

    ~           1234  .
    Status against revision: 1234
    

0

FTP 클라이언트를 사용하여 하위 디렉토리가있는 폴더에 작업 사본에 붙여 넣을 때이 문제가 발생했습니다. 전송 버튼을 누르 자마자 망했다는 것을 알았습니다. 작업 방식이 너무 늦었습니다.

나는 위의 모든 제안을 시도했지만 다른 발견은 온라인에서 아무 소용이 없었습니다. 모든 옵션에서 디렉토리가 잠겨 오류가 발생하여 작업을 수행 할 수 없습니다.

Time Machine 사본으로 이동하여 디렉토리를 복원했으며 사용하기 좋았습니다. 작업 사본을 예방책으로 정리하고 파일을 올바르게 업데이트 한 후 업무를 다시 시작했습니다.


0

IIS 구성으로 전환하거나 엉망으로 만드는 것을 막기 위해 종종 여러 가지 분기가 동시에 이동하고 있습니다. 각 분기를 별도의 폴더로 확인합니다. 그런 다음 디렉터리 연결을 사용하여 해당 폴더를 IIS에 구성된 기본 경로에 다시 연결합니다.

따라서 나를 위해 연결된 디렉토리는 항상 노란색 느낌표가 있으며 차단 된 것으로 표시됩니다. SVN 외부에서 기술적으로 생성 / 이동 되었기 때문이라고 생각합니다.


0

웹 인터페이스를 통해 CMS (WordPress 또는 Drupal)로 업데이트 할 때 디렉토리에서이 "폐쇄 된"상태를 얻습니다. 응용 프로그램은 해당 코드가 실제로는 하위 버전 작업 복사본임을 인식하지 못하므로 플러그인을 업데이트하면 해당 플러그인이 제거됩니다. 디렉토리 (디렉토리 포함 .svn)와 플러그인의 새 버전에서 새 디렉토리를 가져옵니다.

그 얻으려면 .svn차단 된 디렉토리를 포함하는 디렉토리에서 디렉토리의 뒷면. 로 결제를 수행합니다 --force. 예를 들어 plugin_dir"~"로 표시 되면 상위 디렉토리에서 다음을 실행합니다.

svn checkout --force http://svn.server.hostname/path/to/repo/and/plugin_dir

이미 존재하는 모든 파일은 checkout 명령의 출력에 단독으로 남겨지고 "E"로 표시됩니다 (실행시 "M"으로 표시됨 svn status).

때때로 업데이트로 새로운 파일을 다시 추가해야합니다. 또는 체크 아웃 할 때 다시 나타나기 때문에 업데이트의 일부로 삭제해야하는 파일을 삭제하십시오. 결제시 'A'로 표시되어 있지만 이후 svn status에는 언급하지 않습니다.


0

Eclipse에서 일부 파일에 빨간색 느낌표가 표시되는 문제가 발생했습니다. 소스 디렉토리의 .svn 폴더가 문제였습니다. .svn 폴더를 삭제하고 이클립스를 새로 고침하여 파일을 체크인 할 수있었습니다.


yup 폴더를 삭제해야했는데 .svn 폴더가 손상되었습니다.
PositiveGuy

0

서브 버전을 XCode가 지원하지 않는 버전으로 업그레이드 할 때도 발생할 수 있습니다.


0

이 문제를 해결하는 가장 간단하고 안전한 방법은 다음과 같습니다.

  1. 문제가있는 파일 또는 디렉토리 (또는 상위 디렉토리)의 이름을 일시적으로 바꿉니다 (예 : ".backup"추가).
  2. .svn이름이 바뀐 디렉토리 (해당되는 경우) 내의 디렉토리를 삭제하십시오 .
  3. svn revert 1 단계에서 이름이 바뀐 (현재 누락 된) 개체
  4. svn delete 되 돌린 객체
  5. 1 단계에서 백업을 원래 이름으로 다시 이름을 바꿉니다.
  6. 이름이 바뀐 오브젝트를 새 오브젝트로 svn에 다시 추가하고 체크인하십시오.

0

파일 이름이 동일한 폴더로 파일을 교체했을 때 이런 일이 발생했습니다. 이전 파일을 삭제하고 커밋 한 다음 새 파일을 추가하여 해결합니다. 조금 해 키지 만 나를 위해 일했습니다 :)


0

막힌 디렉토리에서 .svn을 삭제하고 외부에서 업데이트했습니다. 그런 다음 외부 svn 명령은 이러한 파일을 인식합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.