내 SVN 저장소에서 서브 트리를 새로운 저장소로 추출하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/563970

  •  05-09-2019
  •  | 
  •  

문제

우리는 하나의 디렉토리가있는 전복 저장소를 가지고 있습니다.

  • RC의 기능을 넘어서 수정 제어가 필요하지 않습니다.
  • 저장소의 다른 것과 함께 버전이 없습니다.
  • 나머지 저장소보다 약 6 배나 자주 수정

그럼에도 불구하고 높은 개정 번호는 문제가되지 않는다는 것을 알고 있지만,이 하나의 단일 디렉토리를 메인 저장소에서 가져 와서 두 번째로 이상적으로 새로운 디렉토리로 가져 가고 싶습니다.

그것에 가장 적합한 과정은 무엇입니까? 차이가있는 경우 SVN 리포지토리는 (... Checks ...) freeBSD 머신에서 호스팅됩니다.

새로운 저장소에서 버전 기록을 유지해야하지만 이전의 내용을 망쳐 놓을 필요는 없습니다. 내가 관심을 갖기 때문에 거기에 앉을 수 있습니다.

도움이 되었습니까?

해결책

당신은 사용할 수 있습니다 svnadmin 덤프 그리고 svnadmin 부하 원래 저장소에서 새 저장소를 생성합니다. 그런 다음 실제로 체계에 맞지 않는 디렉토리를 더 나은 위치에 복사 한 다음 다른 모든 것을 삭제하십시오. 원래 저장소에서는 단순히 적합하지 않은 디렉토리를 삭제합니다. 이것은 모든 역사를 그대로 유지하고 두 개의 리포지토리로 끝납니다.

아마도 역사의 쓸모없는 부분에서 두 리포지토리를 모두 청소할 수있는 방법이있을 것입니다 (svndumpfilter), 그러나 단단한 디스크 공간은 상당히 싸기 때문에 이것이 필요하다고 생각하지 않을 것입니다. 어쨌든, SVN 문서 그것에 대한 모든 정보가 있습니다.

다른 팁

이를위한 권장되는 방법은 사용하는 것입니다 svnadmin dump, 덤프 파일을 svndumpfilter 도구 (참조 svnbook).

예를 들어, '모델'이라는 최상위 디렉토리가있는 리포지토리가있었습니다.

svnadmin dump my_orig_repo | svndumpfilter include --drop-empty-revs --renumber-revs Model >model_only.svndump
svnadmin load my_model_repo < model_only.svndump

모델 서브 디렉토리만으로 새로운 리포지토리를 만듭니다.

원래 저장소에서 제거하려면 간단히 할 수 있습니다. svn rm. 이렇게하면 최신 버전의 Repo에서 제거되며 가장 간단한 방법입니다.

그러나 예제의 모델 디렉토리가 매우 크면 원본에서 완전히 제거하고 싶었을 것입니다. 다른 필터링 된 SVN 덤프 파일을 만들기 위해 프로세스를 반복하여 그렇게 할 수 있습니다. 제외된 대신. 그런 다음 원본을 제외 된 디렉토리가없는 새로운 원본으로 교체 할 것입니다.

디렉토리를 내보내고 (체크 아웃하지 않음) 디렉토리를 새 저장소로 가져온 다음 원본에서 삭제합니다 (물론 어디로 갔는지를 나타내는 로그 메시지와 함께 ;-).

그것은 "가장 좋은"방법 일 수도 있고 아닐 수도 있습니다 ...

나는 이것을 올바르게 이해하는지 모르겠지만 그것에 대한 좋은 해결책이 있습니다. 원래 저장소가 svn : // domain에 있고 많이 사용하는 폴더를 "폴더"라고하는 경우 다음 명령을 간단히 수행 할 수 있다고 생각합니다. svn co svn://domain/folder 해당 폴더 만 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top