Subversion의 상태 "S"


80

어떤 시점에서 내 작업 복사본의 모든 파일은 아래와 같이 "S"기호로 표시됩니다.

$ svn st
M    S   AclController.php
     S   InstallationController.php
     S   CustomerController.php
     S   RedirController.php
     S   IndexController.php
     S   LoginController.php
     S   OrderController.php
     S   ProductController.php
     S   SelfInstallController.php
     S   SelfcareController.php

흥미롭게도이 특정 작업 사본에서만 발생합니다. 프로젝트를 새 디렉토리로 체크 아웃 할 때 "S"표시가 표시되지 않습니다.

이 성가신 "S"기호를 제거하는 방법은 무엇입니까? 그것은 WC 상태의 명확성을 현저하게 감소시킵니다.

업데이트 : 표준 svn switch구문을 사용하여 때때로 전환 합니다. 이 "S"기호는 최근까지 나타나지 않았습니다. 전환에 사용 된 명령은 다음과 같습니다.

svn switch svn+ssh://xxxxxx/subversion/xxxxxxx/releases/1.0.16 .

"S"플래그를 지울 수있는 방법이 있습니까?


7
에 따르면 상태 S는 "전환됨"을 의미합니다 svn h st. 어떤 것을 의미하지만 ...
me_and

1
@me_and : 작업 복사본 전환 : svnbook.red-bean.com/en/1.0/ch04s05.html
Chris J

1
기록을 위해-내가 온라인에서 찾은 가장 가까운 문제이기 때문에-분기를 트렁크에 병합하는 동안 S 플래그 문제가 발생했습니다. 그것은 우리가 외부를 사용하고 있다는 사실과 관련이 있습니다. 브랜치에서 제거되었지만 트렁크가 계속 참조하여 병합에 실패했습니다. 해결책은 트렁크의 브랜치에서 제거한 외부를 제거하고 트렁크를 커밋 한 다음 다시 통합하는 것이 었습니다. 길을 따라 누군가를 도울 희망 :) 건배!
Darío Javier Cravero

답변:


76

이는 파일이 포함 된 디렉토리가 아닌 Subversion 저장소의 다른 위치에 있음을 의미합니다. 해결책은 전체 작업 복사본을 동일한 위치로 전환하는 것입니다. 명령을 호출하는 방법에 대한 자세한 내용은 Subversion 책 의 섹션 을 참조하십시오 .


35
커밋되지 않은 로컬 파일의 리포지토리 버전으로 전환하는 분기와 같은 일종의 충돌로 인해 "svn switch"명령이 중단 될 때도 이런 일이 발생하는 것을 보았습니다. 전체 작업 복사본이 불완전하게 전환되는 문제를 해결하기 위해 svn에서 뛰어 내립니다. 문제를 해결 한 다음 스위치 명령을 다시 실행하면 효과가 있습니다.
Michael H.

4
오류-E210002 : 네트워크 연결이 예기치 않게 종료되었습니다. 스위치 명령을 다시 실행하면 문제가 해결되는 것처럼 보였고 "S"상태가 사라졌습니다.
Kevin Sadler 2015

1
svn 스위치 중에 중단이 발생합니다. 주의하십시오.
SandorRacz 2015-08-12

2
Kevin Sadler는 단순히 문제를 설명하는 것이 아니라 실제로 해결책을 제공합니다. +1
ahnbizcad 2016

11

디렉토리 자체와 내부 파일 중 하나에 대해 'svn info'를 호출하면 두 개의 다른 URL을 얻게됩니다.

파일 / 디렉토리의 URL이 파일 이름이 뒤 따르는 상위의 URL과 일치하지 않으면 'S'상태가됩니다.

부모와 자식 노드 중 하나의 URL을 게시 할 수 있습니까? (해당되는 경우 URL 익명화)


대답은 아니지만이 '답변'은 무슨 일이 일어나고 있는지에 대한 단서를 제공하는 데 매우 유용합니다.
FlipMcF

이것은 대답이 아닙니다.
ahnbizcad

8

트렁크 (r100)에서 일부 브랜치 (r50)로 전환하는 동안 ' S '상태였습니다. 오류가 발생했습니다.

svn: Failed to add file 'web/.htaccess': an unversioned file of the same name already exists

모든 web /의 하위 디렉토리는 ' S '플래그가 지정되었습니다.

원인 : svn : ignore (r100)에 대한 .htaccess를 삭제 한 다음 다시 만들었습니다 (버전이 지정되지 않고 무시 됨). 브랜치 (r50)는 여전히 repo에 web / .htaccess를 가지고 있습니다.

해결책 :

mv web/.htaccess ../../
svn switch back to trunk
svn switch to branch again

모든것이 괜찮아.


비슷한 오류가 발생했지만 "web / .htaccess"의 잘못된 버전을 삭제하고 (저에게는 여러 디렉터리 였기 때문에) svn 업데이트를 수행 한 다음 트렁크에서 특정 태그로 다시 트렁크로 전환했습니다 (특정 태그는 실제로 트렁크의 사본 ...) 그리고 잘못된 'S'플래그가 사라졌습니다.
Kasapo 2012 년

6

SVN에 성공적으로 커밋 한 디렉터리에이 문제가 발생했습니다. 나를위한 해결책은 로컬에서 지우고 업데이트하는 것이 었습니다. 차이점을 볼 수 없었지만 .svn 파일은 어떤 이유로 든 수정되었습니다 (더 이상 S 없음).


나는 새로운 분기로 업데이트 한 후 svn 외부에서 이런 일이 발생했습니다. 전체 외부를 수동으로 삭제 한 다음 svn update를 실행하면 문제가 해결되었습니다. +1!
Stephen Fuhry 2011

5

이는 일반적으로 분기를 전환 할 때 중단으로 인해 발생합니다.

다른 분기로 전환 한 다음 실제로 원하는 분기로 다시 전환하십시오.

svn switch some_other_branch_url

svn switch desired_branch_url


4

참고 : 저장소의 동일한 위치에서 삭제 된 디렉토리를 체크 아웃 했지만 다른 URL을 사용 했을 때 동일한 S 기호가 표시되었습니다 . .gforge ... '에 대해'svn checkout --username user https : //scm.gforge .... '. 나는 첫 번째 결제에 사용한 것과 동일한 URL을 사용하여 다시 확인하여 해결했습니다.


동일한 URI로 다시 체크 아웃하면 해결되었습니다. 감사합니다.
sepehr

4

누군가가 대답을 늦게 찾는 경우 (위에서 올바르게 언급 됨),이 상황의 가능한 원인은 실패한 상위 디렉토리의 'svn 스위치'라고 생각합니다 (로컬 커밋되지 않은 파일의 경우). 동일한 이름, --force 옵션 없음) 실패 후 모든 파일을 '전환되지 않은'상태로 둡니다.

그렇기 때문에 (원래 문제가 나중에 수정되었다고 가정하면) 동일한 상위 디렉토리에서 후속 'svn 스위치'가 실제로 나머지 전환되지 않은 파일을 새 저장소 경로로 전환합니다.


3

이것은 한 작업 복사본에서 다른 작업 복사본으로 전환했음을 의미합니다. 예를 들어 작업 복사본을 체크 아웃 한 다음 코드 분기와 비교하기 위해 교체했습니다. 이를 실행 취소하는 방법에 대한 자세한 내용 은 SVN 책 을 참조하십시오.


1
링크는 SVN 책의 오래된 버전에 대한 것입니다. 여기에서 시도하십시오 : svnbook.red-bean.com/en/1.5
Andrew Aylett

좋은 자리. 구글은 또 실패한다.
me_and

3

이 상태를 달성 할 수있는 또 다른 방법이 있습니다.이를 통해 누군가를 추적하는 시간을 절약 할 수 있습니다.

내 SVN 루트에 외부 라이브러리의 압축을 푼 결과 타사 작성자가 실수로 자신의 폴더 중 하나에 자신의 .svn 폴더를 포함시킨 것으로 나타났습니다. 물론 이것은 우리 자신의 올바른 하위 버전 폴더를 덮어 쓰며이 페이지의 다른 곳에서 설명한 것과 동일한 효과를 갖습니다. 폴더가 예기치 않게 다른 분기로 전환 된 것으로 보입니다.


1
네, 방금 먹었어요. 디렉토리를 삭제하지 않고 한 프로젝트에서 다른 프로젝트로 아이콘 디렉토리를 복사했습니다 .svn. 사용할 깨끗한 디렉터리를 내보내거나 복사 한 후 .svn 디렉터리를 통해 삭제하면 svn add예상대로 수행됩니다.
에릭

1

"항목이 바뀝니다."

작업 복사본에 "svn 스위치"를 사용했다면 설명 할 수 있습니까?


지금 스위치 명령을 사용하려고했지만 'S'상태가되지 않습니다. 전환 했습니까? 그리고 주류가 아닌 방식으로 수행 했습니까?
stiank81 2009

0

나를 위해 이것은 "svn switch"명령이 중단 될 때 발생하고 TortoriseSVN으로 해결하기 위해 파일을 마우스 오른쪽 버튼으로 클릭 하고 상위로 다시 전환을 선택 합니다.


0

발행 할 때 'S'를 제거하는 간단한 솔루션

svn status

'S'로 표시된 디렉토리로 이동하여 숨겨진 .svn 디렉토리를 삭제하십시오.

rm -rf .svn

그 후 소스는 '?'로 표시됩니다. 쉽게 새로 추가 할 수 있습니다.

svn add path / to / resource


제 경우에는 동일한 서버의 다른 리포지토리에서 추가 한 리소스 옆에 'S'가 표시되었으므로 위에서 설명한 솔루션이 분명했습니다.
Torsten Barthel

0

제 경우에는 분기의 두 하위 디렉터리가 트렁크에서 삭제되었습니다. 트렁크에서 최상위 디렉터리의 분기로 전환 한 다음 다시 트렁크로 이동하여 해당 하위 디렉터리의 문제가 현재 상태에 있음을 경험했습니다 S.

@ahnbizcad의 답변을 지침으로 사용했습니다. 하위 디렉토리의 상위 디렉토리 (최상위 디렉토리 아래에 있음)에서 :

svn sw <branch_url>

svn sw <trunk_url>


-6

공식 도움말을 읽고 다음을 시도하십시오.

svn st --help

또는

svn st --help | grep S

'S' the item has a Switched URL relative to the parent

4
RTFM은 그 상태를 제거하는 방법에 대한 질문에 대답하지 않습니다.
매덕
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.