Subversion 상태 기호 "~"는 무엇을 의미합니까?


110

을 할 때 물결표 기호가 나타납니다 svn status.

다음은 XCode에서 편집 한 프로젝트의 출력입니다.

svn status
M      build/Currency_Converter.build/Currency_Converter.pbxindex/imports.pbxbtree
M      build/Currency_Converter.build/Currency_Converter.pbxindex/pbxindex.header
M      build/Currency_Converter.build/Currency_Converter.pbxindex/symbols0.pbxsymbols
~      build/Currency_Converter.build/Currency_Converter.pbxindex/strings.pbxstrings
M      main.m
//more changed files

그게 무슨 뜻인지 아세요? Google 또는 svn 치트 시트에서 찾을 수 없습니다.

흥미롭게도 main.m 만 편집했지만 수정 된 파일이 많이 있습니다. 왜 그럴까요? 누구든지 SVN 및 XCode 작업에 대한 팁이 있습니까? 소스 파일을 버전 제어 만해야합니까?

편집 : -이미 버전 관리중인 파일이 다른 유형의 파일로 대체되어 발생합니다. 이 경우 strings.pbxstrings는 이전에는 파일 이었지만 이제는 디렉터리가되었습니다. 이야기의 도덕은 빌드 폴더를 버전 관리에 넣지 않는 것입니다.


흠, 다시 추가하는 것이 아니라 "고정"할 방법이 있는지 확실하지 않습니다. 이 상태를 해결하는 좋은 방법이 있는지 묻는 다른 질문을 게시 할 수도 있습니다. 더 많은주의를 끌 것입니다 (현재 질문에 이미 답변이 있기 때문입니다).
Chad Birch

답변:


88

SVN 도서는 말합니다 :

항목은 한 종류의 개체 (파일, 디렉터리, 링크)로 버전이 지정되었지만 다른 종류의 개체로 대체되었습니다.

원래는 단일 파일 이었지만 디렉토리로 변경 했습니까?


1
당신이 옳은 것 같습니다. 이제 .svn 파일이없는 디렉토리입니다. 그것을 고치는 방법에 대한 아이디어가 있습니까? Subversion에서 삭제하고 다시 추가해야합니까?
jergason

이 문제를 해결할 방법을 찾았습니까?
Phill Pafford

48
가장 좋은 해결책은 새 개체 (귀하의 경우 디렉터리)의 이름을 바꾸는 것입니다. 충돌을 일으키는 저장소에서 객체를 "svn remove"(아마도 삭제 한 파일)하고 Commit 한 다음 새 객체의 이름을 다시 바꾸고 저장소에 "svn add"합니다. 다시 커밋하십시오. 이전 개체가 존재하고 제거되고 새 개체가 추가 된 일련의 3 개 수정 버전이 각각 나타납니다.
Brian Lacy

8
이 스레드를 읽는 사람이 동일한 문제를 가지고있는 경우 : 이것은 나에게 발생했으며 '~'상태의 이유는 저장소에 일부 심볼릭 링크가 있었기 때문에 'sed -i'작업에 의해 표준 파일로 덮어 쓰기되었습니다. . 심볼릭 링크를 다시 만들었고 '~'가 사라졌습니다.
jb

5
@JamieBullock 오늘도 같은 이유로 나에게 같은 일이 일어났습니다. 문제가 무엇인지 알기 전에이 명령을 시도했습니다 svn status | grep ^~ | grep -o [^[:space:]]\*\$ | xargs svn revert. 모든 심볼릭 링크를 복원 할 수있었습니다.
Paul

34

내가 한 일은 다음과 같습니다.

폴더가 Test 인 경우

  1. mv 테스트 테스트 1
  2. svn 제거 테스트
  3. mv Test1 테스트

5
제거와 추가 사이에 헌신하는 한 이것은 나를 위해 일했습니다. 1. mv Test Test1 2. svn remove Test 3. svn commit -m "Removed Test"4. mv Test1 Test 5. svn add Test 6. svn commit -m "Added Test"
Brandon Brodjeski

1
@sancelot의 대답은 훨씬 낫습니다. 을 사용하는 경우 이름을 바꿀 필요가 없습니다 svn delete --keep-local fileName.
DawnSong

15

에서

svn help status

'~'버전 항목이 다른 종류의 항목에 의해 차단됨

나는 파일 권한이 변경되고 svn에 실행 액세스 권한이없는 곳에서만 이것을 보았다.

도움이 되었기를 바랍니다.


12

이 문제를 해결하는 가장 쉬운 방법은 백업 한 다음이 상태의 폴더 또는 파일을 삭제 한 다음 "svn up"을 수행하는 것입니다. 파일에 의해 상대적으로 배치 된 폴더 일 필요는 없으며 .svn 폴더가 없거나 손상되었을 수 있습니다. .


11
svn delete --keep-local x
svn commit -m "del x"
svn add x
svn commit -m "blah"

이름을 바꿀 필요가 없습니다. 최고의 답변을하셨습니다.
DawnSong

베스트 답변! 이렇게하면 문제가 해결됩니다. 제 경우에는 일반 파일로 커밋 된 소프트 링크였습니다.

10

이는 폴더에서 .svn 폴더를 제거하거나 (예를 들어 디렉터리를 제거한 다음 동일한 디렉터리를 다시 생성하는 경우), 디렉터리를 심볼릭 링크 또는 동일한 이름의 파일로 대체 할 때 발생할 수 있습니다. .

a-folder라는 폴더라고 가정하면 상위 폴더에서 다음 명령을 실행하여이 문제를 해결할 수 있습니다.

$ find a-folder -type d -name '.svn' -print0 | xargs -0 rm -Rf
$ svn up --force .
svn: Directory 'logs/.svn' containing working copy admin area is missing
$ svn up --force .
E    a-folder
...
Updated to revision n.

그런 다음 svn 추가 ​​/ 제거 및 변경 사항을 다시 커밋하는 문제입니다.


3

비슷한 문제가 있었는데 SVN은 자물쇠에 대해 불평했습니다. 우리가 한 일은 다음과 같습니다.

  • 파일을 백업했습니다.
  • rm -r (Linux)로 문제의 디렉토리를 제거했습니다.
  • 란의 SVN 정리 디렉토리에
  • 란은 --force를 svn을 디렉토리에

3

이것은 Joomla 내에서 확장을 설치할 때 자주 발생하는 문제라는 점을 공유하고 싶습니다. 확장은 CMS를 통해 설치되며 그룹 쓰기없이 Apache가 소유합니다. 일반적으로 다음 단계는 SVN에 파일을 추가하는 것이지만 sudo 또는 파일 perms를 변경하지 않으면 .svn 디렉토리를 쓸 수 없을 때 SVN이 실패합니다. 여기에 쉬운 해결책이 있습니다.

mv foo foo-bak
svn up foo
svn revert foo

# just for good measure. Foo should not show up in the two following commands.
ls | grep foo
svn st | grep foo

mv foo-bak foo
svn add foo

2

Windows에서 심볼릭 링크의 문제 일 수도 있습니다. SVN에 심볼릭 링크를 커밋 한 다음 Windows에서 체크 아웃하면 링크가 일반 파일로 변경되고이 역시 ~로보고됩니다.


1
그래서 어떻게 고칠까요?

2

Joomla !, Wordpress 또는 Drupal에서 모듈을 업그레이드하는 동안 자주이 문제가 발생했습니다. 때때로 .svn 디렉토리는 업그레이드 과정에서 제거됩니다.

# rename updated directory
mv foo foo.new

# restore the old directory
svn up foo

# merge / update the old directory with new items
# notice that the above command will preserve the obsolete files
# so you should do a diff -r in order to remove them
cp -r foo.new/* foo

# Add files commit, etc
svn add foo/*
svn delete foo/xx
svn commit -m "updated module"

0
~ versioned item obstructed by some item of a different kind
    Second column: Modifications of a file's or directory's properties
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.