2012-10-22 3 views
7

두 저장소에서 작업해야하며 개정 내역을 유지하면서 두 디렉토리간에 코드가있는 한 디렉토리를 이동하려고합니다.SVN 두 저장소 사이에 내역이있는 코드 이동

나는 여기에 몇 가지 질문을 읽었지만 어떤 방향으로 나아갈 지 아직 확실하지 않다. 모든 것이 (code + designdata + ...)에 체크인되었으므로 우리 리포지토리는 HUGE (orkingcopy 파일 수> 수 GB)이 아닙니다. 내가 지금까지 본

솔루션은 다음과 같습니다

  1. svnadmin 덤프 + 필터 + 수입 :하지 옵션으로 인해 저장소 크기
  2. svnsync : 우리는 이미 두 번째 저장소에 데이터가 (리포지토리는 이미 거대하고, 나는 병합이 좋은 아이디어라고 생각하지 않는다. 내 작업이 아닌 decidng 외에) 내가 모은 것에서는 두 번째 저장소가 비어 있어야한다.
  3. Third Party Solution : 충돌을 반복, "파일을 열 다른 프로세스 께서"는
을 (enevthough 내가 운영 체제를 통해 파일을 제거 할 수 있으며,이 스크립트에 의해 작성되는) 때문에이 파일을 삭제할 수 없기 때문에

다른 솔루션이나 접근 방식이 있습니까? 아니면 해결책 중 하나가 누락 되었습니까?

+1

첫 번째 옵션이 왜 문제가됩니까? 파일에 저장하지 않고 필터를 통해 덤프를 전달할 수 있습니다. –

+0

@DmitryPavlenko : 저장소가 대략 20Gb 체크 아웃되었고 개정 번호가 현재 6 자리 숫자 (112xxx) 인 것으로 고려하면 덤프는 상당히 커야합니다. 크기가 몇 meg 인 코드 디렉토리를 이동하기 위해 전체 저장소를 덤프하는 것은 과도한 것으로 보인다. 이것은 시스템에 많은 불필요한 스트레스를 가중시킵니다. (모든 개정판/덤프 => "복사"200G 또는 상당량 (복제 크기를 확인해야 함) => 200G의 데이터에서 필터를 실행하십시오. 우리 모두의 워크 플로우를 막을 정도로 많이 사용하고있는 네트워크를 통해 실행하십시오. – ted

+0

@DmitryPavlenko : 간단히 말해, 200G를 관리자 (사용자가 아닌 관리자)가 아니고 네트워크 영향 및 오버 헤드가 있는지 확신 할 수 없습니다. 이 데이터 양이 이동하는 동안 계속 작업하고 싶습니다.하지만 저장소에 액세스하는 중이라면 svn dump는 어떻게합니까? – ted

답변

7

svnadmin dump + filter + import는 큰 저장소에서도 작동합니다.

성능 향상을 위해 수행해야 할 몇 가지 작업이 있습니다. 복사 할 폴더를 처음 만든 리비전을 확인합니다. 그런 다음 해당 로그에서 아무것도 수정 한 마지막 버전을 찾으려면 로그를 확인하십시오. 해당 범위의 리비전 만 덤프하면됩니다.

--incremental 플래그를 사용하여 svndump를 실행하십시오.

SVN 덤프에 Deltas 플래그를 사용하지 마십시오. SvnDumpFilter는 "델타"로 만든 덤프에서는 작동하지 않습니다. 거대한 덤프를 파일에 저장하려고 시도하지 말고 파일에서 SvnDumpFilter를 실행하십시오. 대신 한 번에 파이프로 처리하십시오.

당신의 시작 개정은 10000이었고, 최종 버전은 20000이고 당신이 프로젝트/소스이었다 복사 할 경로, 명령이 덤프를로드 할 svnadmin load 명령에 의해 이어

svnadmin dump --incremental -r10000:20000 YourRepoPath | svndumpfilter include projects/source --drop-empty-revs --renumber-revs > source.dump 

과 같아야 경우 다른 레포로

+0

저장소로이를 수행 할 수 있습니까? 온라인? 결국 나는 마지막 개정을 제한한다. – ted

+0

예, 저장소를 사용하여 덤프 및로드를 수행 할 수 있습니다. – maddoxej