2010-01-12 3 views
3

나는 로드 된 svn 저장소에 마지막 몇 개정판이 누락되었습니다. 어떻게 해결합니까?

svnadmin dump repos > repos.dump 

다음 나는 새 컴퓨터

svnadmin load newrepos < repos.dump 

에 그것을로드 완료되면 새 저장소가 지난 몇 백 개정 누락 내 저장소를 덤프.

repos.dump가 리비전을 누락하고 있는지 검사 할 수 있습니까? 누락 된 리비전을 덤프하고 새 리포지토리에로드 할 수 있습니까? 아니면 처음부터 다시 시작해야합니까?

처음부터 시작하는 것은 저장소가 3GB이고 중간 정도의 속도로 인터넷을 통해 잡아야하기 때문에 고통 스러울 것입니다!

EDIT : SOLVED - 운영자 오류!

그래서, 난 이미 (account2하는 계정 1에서) 일단 저장소를 마이그레이션했다고 잊고와 나는 계정 1 저장소를 제거되지 않습니다. 나는 내 원격 계정에 빠르게 ssh를 넣을 수있는 bash 함수를 가지고 있으며 기본적으로 account1을 기록하고있다. (나는 그것에 대해 생각하고 있지 않다.) 그리고 저장소를 보았을 때부터 모든 것이 잘되고 그래서 account3에 덤프를 보냈다. 내가 잘못된 계좌에 있다는 사실을 알지 못하도록 별칭을 말한 것).

이제 터미널의 밝은 빨간색 계정에 사용자 이름을 넣을 것입니다. 그리고 나는 그들에게 거짓말을하기보다는 오래된 저장소를 캐싱하고 있습니다. 그리고 프로필 해킹의 기본 사용자 측면을 제거하려고합니다.

그러나 누락 된 버전을 새 위치로 전송하는 데 --incremental을 사용할 수있었습니다. 그래서 모든 조언은 여전히 ​​도움이되었습니다.

+0

완전히 새로운 저장소에로드하고 있습니까? – kdgregory

+0

네, 완전히 새로운 것입니다. – bias

답변

4

덤프가 4GB보다 큽니다 (덤프는 기본적으로 델타와 함께 저장되지 않으므로 repo보다 훨씬 클 수 있습니다). 그리고 덤프를 잘린 파일을 전송하는 프로세스의 일부 단계는 4GB는 일부 파일 시스템의 최대 파일 크기 (일부 프로토콜의 경우도 가능)입니다. 또한 사용중인 파일 전송 방법에 따라 프로세스의 일부 단계에서 2GB로자를 수 있습니다.

파일을 검사하여 확인할 수 있습니다. 그 안에 리비전 번호가 있어야하며, 얼마나 높은 지 볼 수 있습니다.

전체 프로세스를 다시 시작하는 대신 --incremental 옵션을 svnadmin dump에 사용하여 증분 덤프를 생성 할 수 있습니다. 증분 덤프는 새 리포에로드 한 마지막 버전부터 시작합니다. 증분 덤프를 기존 저장소에로드하면 정상적으로 작동합니다. 당신은 뭔가를 할 것입니다

svnadmin dump --incremental -r 1234:HEAD > repos.2.dump 
# Transfer to new system 
svnadmin load < repos.2.dump 
+1

+1 - 4Gb 파일 크기를 잘 잡습니다. dump 명령에'--deltas'를 던지기를 권합니다. – kdgregory

1

리포지토리가 리포지토리에 누락되어 있는지 검사 할 수 있습니까?

예. 덤프 파일에는

 
Revision-number: XYZ 

과 같은 줄이 있습니다.

누락 된 리비전을 덤프하고 새 리포지토리에로드 할 수 있습니까?

예. svnadmin load을 사용하여 새 저장소 또는 기존 저장소에 개정을 적용 할 수 있습니다.

1

덤프를 수행 할 때 명령 줄에 개정 번호를 써야합니다. 그랬듯이 파일로 리디렉션 할 때도 마찬가지입니다.

파일 자체를 검사하고 Revision-number:을 찾아서 실제로 어떤 개정판이 있는지 확인할 수 있습니다.

1

모든 개정이 덤프 파일에 있는지 확인하려면 "개정 번호"에 대해 grep을 지정하십시오. 파일을 텍스트 편집기에서 열어 명백한 손상 여부를 검사 할 수도 있지만 do not save it입니다.

svnadmin load에 대해 내가 발견 한 주된 이유는 이미 콘텐츠가있는 저장소에로드하려는 경우입니다. load 명령은 덤프 파일을 만들기 전에 저장소가 예상 된 상태인지 확인합니다. 저장소를 덤프 할 때 --incremental 플래그를 사용하여이 문제를 해결했습니다.

1

개인적으로, 나는 그것을 다시 덤프거야. 내가 가장 likley 답을 sugest 귀하의 원래 덤프가 성공적으로 완료되지 않았습니다 - 덤프가 실행 된 후 명령 줄에 오류가 있었나요? 덤프 자체를 검사하고 싶다면 다음을 참고하십시오. http://www.troyhunt.com/2009/12/black-art-of-splitting-subversion.html

다른 방법으로 원래의 저장소를 대상 위치로 전송하는 것입니다. 압축 된 버전의 데이터를 복사하므로 덤프를 복사하는 것보다 프로세스가 빠릅니다 (전송하기 전에 압축 한 것인지 확실하지 않음).

관련 문제