svn 'out of date'오류를 어떻게 극복합니까?


336

Subversion에서 디렉토리 구조를 한 위치에서 다른 위치로 이동하려고 시도했지만 Item '*' is out of date커밋 오류가 발생합니다.

최신 버전을 체크 아웃했습니다 (알 수있는 한). svn st -umv 명령 이외의 차이점은 없습니다.


11
당신은 svn을 시도 했습니까?
Sklivvz

3
사소한 문제 회피는 폴더와 내용을 삭제하는 경우 먼저 내용과 svn을 삭제 한 다음 폴더를 삭제하고 svn을 다시 삭제하는 것입니다.
Fattie

답변:


636

때로는 Windows에서 TortoiseSVN으로 이것을 얻습니다. 나를위한 해결책은 svn update다운로드하거나 업데이트 할 개정이 없더라도 디렉토리에 대한 것입니다 . 그것은 메타 데이터에 무언가를 수행하여 마술처럼 수정합니다.


4
폴더의 svn : ignore 속성을 변경하고 오래된 오류가 발생하기 시작했습니다. 그러나 당신이 말했듯이, 그냥 업데이트했습니다.
Sushant

4
해당 디렉토리를 업데이트하려고하면 "svn : 대상이없는 두 개의 최상위 보고서"가 나타납니다. SVN을 싫어하는 또 다른 이유가 있습니다. git을 사용하면 디렉토리 이동과 같은 기본 작업에서 이런 종류의 바보 같은 문제가 발생하지 않았습니다.
Dan Dascalescu 2018 년

버전 GUI를 사용하여 상위 폴더에서 '오래된'오류가 발생했습니다. 부모 폴더를 업데이트 한 다음 오류없이 커밋했습니다.
milesmeow

1
이것은 또한 svn : ignore를 변경하고 svn 업데이트로 인해 발생했습니다. 감사!
Nathan Schwermann

8
Subclipse에서 "Team-> Update to HEAD"를 사용하십시오. 나와 잘 작동합니다.
NeoRamza

42

운 좋게도 모든 명백한 것들과 다른 제안을 시도한 후 Google 검색으로 인해이 링크로 연결되었습니다 (링크가 더 이상 작동하지 않음) -Subversion의 말 : 파일 또는 디렉토리가 최신 정보가 아닙니다

간단히 말해서, 문제는 .svn 디렉토리 ( 해로운 파일이 포함 된 디렉토리 )로 이동 하여 "all-wcprops"파일을 삭제하는 것 입니다.

다른 일이 없으면 나를 위해 일했습니다.


그랬어! 감사! 어떻게 이런 일이 일어나고 어떻게 피할 수 있는지에 대한 제안이 있습니까?
Jesse Barnum

나를 위해 일했다. 나는 모든 'all-wcprops'파일을 제거해야했습니다 : find. -name all-wcprops -exec rm -rf {} \;
피터 허프

구조에서 파일을 삭제하지 않고 svn 도구 및 옵션으로이 문제를 해결할 수있을 것입니다.
augusto

+1, 이것이 나를 위해 일한 유일한 것입니다. 다른 해결책은 그렇지 않았습니다.
Clayton Dukes

9
나를 위해 일하지 않고 all-wcprops, .sv디렉토리 내에 파일 이 없습니다
ulkas

39

이 문제는 .svn 파일에서 발생한다고 생각합니다. 이전 부모, 새 부모 또는 이전 부모에서 올바르지 않습니다. 나는 당신의 출발점으로 되돌아 가려고 노력할 것입니다. 내보내기를 사용하여 폴더의 깨끗한 사본을 얻으십시오. 클린 사본을 새 위치로 이동하고 추가 및 삭제를 사용하여 이동하십시오. 그것은 SVN 이하는 일을 수동으로 수행하지만 작동 할 수 있습니다.


4
Subversion은 실제로 복사 한 다음 삭제합니다. 삭제하고 여기에 추가하는 것과는 다릅니다.
SnakE

37

나는 이것이 나를 위해 작동한다는 것을 발견했다.

svn update
svn resolved <dir>
svn commit

svn update전에 하지 않고 나를 위해 일한 나는 업데이트를 피하고 싶었던 시나리오가있었습니다. (그래서 방금 해결하고 커밋했으며 작동했습니다)
BornToCode

이것은 내 상황의 치료법이었고 다른 것은 효과가 없었습니다. 감사!
texasdave

14

로컬 사본을 업데이트하려고했으나 해당 항목을 되돌리려 고했지만 여전히 '오래된'오류가 발생했습니다. 이것은 어떤 이유로 작동했습니다.

svn update --force /path/to/dir/or/file

11

방금 여러 폴더에서 동일한 문제가 발생했으며 이것이 커밋 한 것입니다.

1) "팀 동기화"관점에서 폴더를 마우스 오른쪽 단추로 클릭> 재정의 및 업데이트
2) 폴더를 다시 삭제
3) 커밋하고 행복해


5

감사합니다. 그것은 나를 위해 그것을 해결했습니다. svn update --force / 경로를 파일명 /

로컬 디렉토리의 최근 파일이 동일하면 프롬프트가 표시되지 않습니다. 파일이 다르면 tf, mf 등을 묻는 메시지가 표시됩니다. mf (mine full)를 선택하면 아무것도 덮어 쓰지 않고 완료되면 커밋 할 수 있습니다.

제이 컴퓨 마터


5

업데이트 버튼을 눌러 문제를 해결할 수 있습니다.


4

@ Alexander-Klyubin이 제안한 것처럼 저장소에서 이동하십시오. 또한 네트워크를 통해 모든 데이터를 다시 전송할 필요가 없기 때문에 이동해야 할 데이터가 많은 경우 특히 빠를 것입니다.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

잘 작동합니다


나는 svn up; svn mv명령 시리즈 와 함께이 문제를 겪고 있었고,이 트릭을 훌륭하게 수행했습니다. 감사합니다.
DopeGhoti

3

명령을 실행하기 전에를 사용하여 파일 또는 경로를 제거하십시오.

sudo rm -r /path/to/dir/

이후 :

svn up and commit or delete 

2

더 낮은 개정이 아닌 헤드를 체크 아웃 했습니까? 또한 최신 버전을 사용하도록 업데이트를 수행하셨습니까?

이것에 대한 토론이 있습니다 http://svn.haxx.se/users/archive-2007-01/0170.shtml .


오래된 사본을 체크인하고 싶다고 가정 해 봅시다. 그렇다면 체크인을하는 가장 쉬운 방법은 무엇입니까?
OJW

오래된 사본으로 되 돌리는 것에 대해 이야기하고 있다면 평소대로 체크인하십시오. 새로운 개정 번호를 얻게됩니다.
jgreep


2

"오래된"메시지 오류의 다른 원인이 하나 이상 있습니다. 내 경우에는 "svn propset svn : ignore -F .gitignore"를 실행하여 생성 된 .svn / dir-props 문제가 발생했습니다. 처음으로. .svn / dir-props를 삭제하면 나쁜 생각처럼 보이고 다른 오류가 발생할 수 있으므로 "svn propdel"을 사용하여 잘못된 "svn propset"을 정리하는 것이 가장 좋습니다.

# Normal state, works fine.
> svn commit -m"bump"  
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 509.

# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'

# Edit a file. Should have committed before the edit.
> svn commit -m"bump"                   
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

# Delete the property.
> svn propdel svn:ignore .              
property 'svn:ignore' deleted from '.'.

# Now the commit works fine.
> svn commit -m"bump"     
Sending        eac_cpf.xsl
Transmitting file data .
Committed revision 510.

2

github svn 브리지를 사용하는 경우 github의 측면에서 무언가가 변경 되었기 때문일 수 있습니다. 해결책은 간단합니다. 실행 만하면 svn switch됩니다. 그러면 스스로를 찾은 다음 업데이트하면 모든 것이 작동합니다. 결제의 루트에서 다음을 실행하십시오.

svn info | grep Relative 
svn switch path_from_previous_command
svn update

또는

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

이 솔루션의 기초는 Lee Preimesberger의 블로그 에서 가져옵니다.


1

당신은 그것을 사용하여 이동하고 svn mv, 아니면 그냥 mv? 사용 mv하면이 문제가 발생할 수 있다고 생각 합니다.


1

안전을 위해 디렉토리를 로컬 컴퓨터로 옮긴 다음 svn은 바보 같은 디렉토리를 삭제 한 다음 커밋했습니다. 로컬 컴퓨터에서 폴더를 추가하려고 할 때 여전히 오류가 발생했습니다 (SVN 이동은 폴더의 이름을 바꾸려고 할 때도 동일한 작업을 수행했습니다). 그래서 나는 되돌아 갔고 mkdir DIRNAME을 수행하고 추가하고 커밋했습니다. 그런 다음 내용을 추가하고 커밋하여 작동했습니다.


1
로컬 체크 아웃이 어떻게 든 손상 되었기 때문에 저장소 내용 변경 (svn delete)을 피할 수 있습니다.
Lars Noschinski

1

각각 파일이 들어있는 몇 개의 디렉토리를 삭제 한 후이 오류를 임의로 받았습니다. Netbeans를 통해 디렉토리를 삭제하고 실제로 삭제하지 않았다는 것을 깨달았습니다. 디렉토리 안의 모든 것을 삭제하고 Netbeans 내의 디렉토리에 대한 참조를 제거하는 것처럼 보였습니다. 그들은 여전히 ​​파일 시스템에 존재했습니다. 파일 시스템에서 삭제되었는지 확인하고 커밋을 다시 시도하십시오.


1

한 번만 새로운 작업 복사본을 체크 아웃하고 .svn 디렉토리를 교체하여 새로이 체크 아웃 된 커밋 오류로 커밋 오류가 발생하여 비슷한 문제가 해결되었습니다. 필자의 경우 리포지토리 손상 및 백업에서 복원 한 후 작업 복사본이 복원 된 리포지토리에없는 수정 버전을 가리키고 있었기 때문입니다. 또한 "항목이 오래되었습니다"오류가 발생했습니다. 커밋 전에 작업 복사본을 업데이트해도 문제가 해결되지 않았지만 위에서 설명한대로 .svn을 대체했습니다.


1

나는 이것을했고 그것은 나를 위해 일했다 :
1. 파일을 백업하십시오. 코드를 텍스트 파일로 간단히 복사 할 수 있습니다.
2. 커밋하려는 파일 >> 팀 >> 내역 표시를 마우스 오른쪽 단추로 클릭하십시오. 3. "이력 표시"패널에 해당 파일의 모든 개정이 표시됩니다. 파일의 최신 개정판을 마우스 오른쪽 버튼으로 클릭 >> 개정판 가져 오기 : 로컬 변경 사항을 무시합니다.
4. 이제 코드를 백업 파일이있는 최신 파일과 병합하십시오 (1 단계).
5. 새로 병합 된 파일을 동기화하고 커밋합니다.


1

서버와 클라이언트를 Subversion 1.9로 업그레이드하십시오.

만약 out of date 오류가 무작위로 발생 커밋 실행할 때 일반적으로, 당신이 오래된 지원되지 않는 서브 버전 1.7 이상 클라이언트 또는 서버를 사용하여 나타낼 수 있습니다하지 말아야 할 때.

문제를 해결하려면 서버와 클라이언트를 업그레이드해야합니다. HTTPv1을 통해 커밋 할 때 관련 Subversion 1.9 릴리스 노트 항목 : "오래된 날짜"오류를 참조하십시오 .


1
이것은 Windows의 TortoiseSVN 1.8.8에서도 발생했습니다. 1.9로 업데이트하면 도움이되었습니다.
Martin Pecka

1

오류는 특정 파일을 업데이트하지 않았기 때문에 먼저 업데이트 한 다음 파일을 커밋 할 수 있기 때문입니다.


1

.svn에서 직접 변경을 제외한 모든 것을 시도했습니다. 아무것도 도움이되지 않으므로 여기에 내 해결책이 있습니다.

Eclipse> Window> Show View> History 에서 여러 svn "Override & Update"/ "Revert"/ delete file and checkout을 만들었지 만 파일이 최신 개정판이 아니라는 것을 알았습니다.

그래서 패키지 탐색기로 이동하여 파일을 마우스 오른쪽 버튼으로 클릭하고 다음으로 바꾸기> 최신 저장소에서을 클릭하십시오 .

기록보기의 또 다른 모습은 파일이 최신 개정판에 있음을 보여줍니다.


1

"정리"그것은 당신을 궤도에 올릴 것입니다.

svn 폴더를 마우스 오른쪽 버튼으로 클릭하고 '정리'를 클릭하십시오. 오류가 발생하면이 작업을 수행하십시오.


0

이것은 트렁크의 파일로 이전 릴리스의 분기를 업데이트했을 때 발생했습니다. Windows 탐색기를 사용하여 폴더 를 복사했습니다. 트렁크 체크 아웃 에서 하여 릴리스 분기 체크 아웃 폴더의 Eclipse보기에 붙여 넣었습니다. 이제 Windows 탐색기는 "."로 시작하는 "숨겨진"파일을 표시하지 않도록 구성되었으므로 릴리스 분기 체크 아웃 폴더에 모든 잘못된 .svn 파일을 붙여 넣는 것을 알 수 없었습니다. 도!

내 솔루션은 손상된 Eclipse 프로젝트를 날려 버리고 다시 확인한 다음 새 파일을보다 신중하게 복사하는 것이 었습니다. 또한 "숨겨진"파일을 표시하도록 Windows를 변경했습니다.


0

일부 파일을 커밋하려고 할 때이 오류가 발생했습니다. 작업 사본에는 존재하지 않는 파일 / 폴더였습니다. 나는 파일을 옮기고 다시 체크 아웃하는 번거 로움을 원하지 않고 결국 .svn / entries 파일을 편집하고 문제가되는 디렉토리 참조를 제거했습니다.


0

제 경우에는 로컬 버전을 삭제하고 새로운 사본을 다시 체크 아웃하는 것이 해결책이었습니다.


0

방금이 오류가 발생했습니다. 원본 파일이 있는지 먼저 서버에서 확인하는 것이 좋습니다. 때로는 로컬 폴더에서 변경 사항이 적용되지 않습니다. 이 상황이라면 폴더를 삭제하고 다시 체크 아웃하십시오.


0

해결하려면 문제가있는 파일을 되돌리고 작업 사본을 업데이트해야했고 나중에 파일을 다시 수정했습니다.이 단계 후에 오류가 더 이상 발생하지 않았습니다.


0

svn을 명령 행에 입력하거나 Windows에있는 경우 svn 업데이트 옵션을 선택하십시오.

  • 이 작업이 완료되면 커밋 등의 추가 작업을 수행 할 수 있습니다.

0

디렉토리 commit에서 시도하는 동안 방금 이것을 얻었습니다 trunk. 디렉토리 svn update에서 수행해도 trunk오류가 해결되지 않았습니다. 그러나 svn update상위 디렉토리 (여기서.svn 디렉토리가 속한)에서 수행하면 오류가 해결되었습니다.

무슨 일이 있었는지에 대한 나의 추측 (다른 것들의 유스 케이스,이 "svn : E160024 : 리소스가 오래되었습니다; 업데이트 시도")에 대한 여러 가지 이유가있을 수 있습니다 :에 따라 디렉토리 trunk가있었습니다 branches. 내가 뽑아 branches/branch-1로를 masterGitHub의에서. 수행 svn update(즉, 내 작업 복사본의 루트) 대신 부모 디렉토리 trunk에서 수행 뭔가가있는 것 branches외에도을 trunk. commit다시 시도했을 때 오류가 없었습니다.

그러나 위에서 말했듯이 이것은 아마도 많은 경우 중 하나입니다.

참고 사항 : 누군가가 제안한 것과 달리 .svn디렉토리 에서 수동으로 재생하는 것이 좋습니다 생각하지 않습니다 .

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