IT TIP

Subversion의 상태 "S"

itqueen 2020. 10. 14. 21:31
반응형

Subversion의 상태 "S"


어떤 시점에서 내 작업 복사본의 모든 파일은 아래와 같이 "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"플래그를 지울 수있는 방법이 있습니까?


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


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

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

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


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

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

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

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

해결책 :

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

모든것이 괜찮아.


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


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


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

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


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

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

svn switch some_other_branch_url

svn switch desired_branch_url


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


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

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


"항목이 바뀝니다."

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


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


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

svn status

'S'로 표시된 디렉토리로 이동하여 숨겨진 .svn 디렉토리를 삭제하는 것입니다.

rm -rf .svn

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

svn add path / to / resource


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

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

svn sw <branch_url>

svn sw <trunk_url>


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

svn st --help

또는

svn st --help | grep S

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

참고 URL : https://stackoverflow.com/questions/1866504/status-s-in-subversion

반응형