'svnadmin load'에 해당되는 글 1건

  1. 2011.05.09 svnadmin dump / load를 이용한 저장소 합치기 (2)
만약에 2개의 장소에서 독립적인 지역 저장소(local repositories)를
하나의 중앙 서버에서 합쳐서 서비스를 하려고 한다는 상황에 적절한 내용

--- 2011.05.11 추가
병합된 내용을 보니 날짜 / 시간별로 revision이 맞물려 들어간다.
---

# svnadmin load --help
load: 사용법: svnadmin load REPOS_PATH

stdin 으로 'dumpfile' 형식의 스트림을 읽어들여, 새로운 리비젼을
저장소의 파일시스템으로 커밋합니다. 이전에 저장소가
비어있었다면, 기본적으로 그것의 UUID 가 스트림에 지정된
한가지로 변경될것입니다. 진행 피드백은 stdout 으로 전송됩니다.

옵션:
  -q [--quiet]             : stderr 에 대한 진행사항이 (오류에 한해서) 없습니다
  --ignore-uuid            : 스트림에 어떤 repos UUID가 발견되어도 무시합니다
  --force-uuid             : 만약 있다면, repos UUID 를 스트림에서 발견된 것에 설정합니다,
  --use-pre-commit-hook    : 리비전을 새로이 커밋하기 전 post-commit 훅을 호출합니다.
  --use-post-commit-hook   : 리비전을 새로이 커밋한 뒤 post-commit 훅을 호출합니다.
  --parent-dir ARG         : 저장소의 지정된 디렉토리에 로드합니다

# svnadmin dump --help
dump: 사용법: svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]]

파일 시스템의 내용을 stdout으로 포터블한 형식의 'dumpfile'로 출력하며,
stderr로 피드백을 보냅니다. 리비젼 LOWER부터 UPPER까지 출력합니다.
주어진 리비젼이 없다면, 모든 리비젼 트리를 적재합니다. LOWER만 주어졌다면,
LOWER 값에 해당하는 리비전만 출력합니다.
--incremental 옵션을 사용한다면, 출력되는 첫번째 리비전에는 해당
리비전에서 바뀐 경로에 대한 것만 기술될 것이며, 그렇지 않은 경우에는
해당 리비전에 존재하는 모든 경로가 출력됩니다.
(이 옵션의 사용여부에 상관없이 출력되는 두번째 이후의 리비전에는 해당
리비전에 바뀐 내용이 있다면, 그 경로의 내용만 출력됩니다)

옵션:
  -r [--revision] ARG      : 리비젼 넘버 ARG ( 또는 X:Y 범위 )를 지정합니다
  --incremental            : incremental 적재를 합니다.
  --deltas                 : 적재된 결과물에 deltas를 사용합니다
  -q [--quiet]             : stderr 에 대한 진행사항이 (오류에 한해서) 없습니다

$ svnadmin dump repo1 > a1.d
$ svnadmin dump repo2 > a2.d
$ svnadmin create new
$ svn mkdir file:///.../new a1
$ svnadmin load new --parent-dir a1 < a1.d
$ svn mkdir file:///.../new a2
$ svnadmin load new --parent-dir a2 < a2.d 

[링크 : http://spyced.blogspot.com/2007/09/merging-two-subversion-repositories.html] 

간단하게 요약하자면
repo1 의 내용을 a1.d 에 
repo2 의 내용을 a2.d 에 파일로 저장하고

new라는 새로운 저장소를 만들어
그 안에 repo1은 a1 이라는 상위 디렉토리를 넣어주고
repo2는 a2 라는 상위 디렉토리를 넣어준다.

만약, 특별한 상위 디렉토리 없이 전부를 넣어주고 싶다면
--parent-dir /
이라고 해주면 목적지 저장소의 / 에 전부 넣어지게 된다.
(실험해보진 않았지만 parent는 저장소의 지정된 디렉토리 이므로,
엄밀하게는 미리 디렉토리를 생성해주고 그 안으로 넣어도록 지정이 가능할 것으로 보인다.)

[링크 : http://geekswithblogs.net/kariemali/archive/2009/06/02/how-to-merge-two-svn-repositories.aspx]
[링크 : http://stackoverflow.com/questions/267256/combining-multiple-svn-repositories-into-one]
Posted by 구차니

댓글을 달아 주세요

  1. 지나가다가...

    svnadmin dump repo1 > a1.d
    svnadmin dump repo1 > a2.d --> 이부분 repo2 > a2.d 인것 같습니다.

    2011.11.23 16:06 [ ADDR : EDIT/ DEL : REPLY ]