2010-03-29 11 views
6

나는 심하게 구조화 된 svn repo에 브랜치를 가지고 있는데이 저장소는 제거되어야하고 다른 svn 저장소로 이동해야합니다. (나는 그것을 깨끗이하려고 노력하고있다).하나의 svn 저장소에서 다른 보존 기록으로 코드베이스를 마이그레이션하는 방법은 무엇입니까?

svn log이 아니고 이 아니라면 복사/이름 바꾸기 나는 모든 3427 커밋을 볼 수 있습니다. 몇 가지 주요 스크립트를 작성하지 않고 수정본을 덤프 할 수있는 방법이 있습니까?

this question의 조언을 따르 겠지만이 지점은 모든 곳으로 옮겨졌으며 이동도 보존하고 싶습니다.

+3

나는 비슷한 질문을했고 'svndumpfilter'는 항상 표준 답변이었다. 너를 위해 자르지 않을거야? –

+0

그럼 svndumpfilter를 사용할 수는 있지만 덤프 지점에서 적어도 9 개의 경로 이름 변경을해야한다고 생각합니다. 나는 자동화 된 솔루션이 있는지 몰랐다. (repo는 git-svn을 사용하기에 너무 엉망입니다.) – chotchki

+0

리비전을 그대로 가져온 다음 Subversion에서 이름을 바꾸지 않는 이유는 무엇입니까? 기록을 다시 쓸 필요가 없습니다. –

답변

2

나는이 @ZacThompson (그리고 @Pekka)이 무엇을 의미하는지와 비슷한 수 있습니다 생각 : 나는 svndumpfilter 당신의 친구라고 생각합니다.

귀하의 질문에 나는 그것이 무엇을 의미하는지 생각하지만 지점 곳곳에 지점을 복사/이동하는 데 어려움을 겪고 있습니까? 그에 대한 대답은 이전에 SVN Documentation 언급에서 찾을 수 있습니다, 저는 믿습니다 :

은 또한, 복사 경로가 당신에게 약간 문제를 제공 할 수 있습니다. Subversion은 저장소에 복사 작업을 지원합니다. 기존 경로를 복사하여 새 경로를 생성합니다. 저장소의 수명이 다한 시점에서 의 파일 위치 또는 디렉토리가 이고, svndumpfilter가 제외 된 파일 또는 디렉토리가 포함 된 위치로 복사되었을 수 있습니다. 을 할 수있는 자급 자족, 아직도의 추가를 보여줄 필요가 svndumpfilter에 덤프 데이터를 새로운 경로를 포함하여 에 의해 생성 된 파일의 내용을 복사하여 소스에서 복사본과 같이, 그 또한 을 나타내지 그 필터링 된 덤프 데이터 스트림에 이 존재하지 않습니다. 그러나 서브 버전 리포지토리 덤프 형식은 각 수정본에서 이 변경된 것을 보여주기 때문에 복사본 소스의 내용은 쉽게 사용할 수 없게됩니다. . 당신이 당신의 저장소에 이런 종류 의 사본을 의심되는 경우, 당신이 포함 당신의 설정을 재고 할 수 있습니다/아마 너무, 당신의 귀찮은 복사 작업의 소스로 제공 경로 포함 경로를 제외.

의미 : svndumpfilter은 분기 사상에 살고 모든 경로를 포함합니다. 또는 나는 무엇인가 놓치고 있냐?

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?

+0

svndumpfilter2에 대해 몰랐지만 제가 찾고있는 것 같습니다. 나는 그것을 시험해보고 그것이 어떻게 작용 하는지를 볼 것입니다. – chotchki

+0

아직 마이그레이션 작업을 완료하지 못했습니다 (거대한 repo 30k + 커밋)하지만이 방법은 유망 해 보입니다. – chotchki

-2

저장소 디렉토리를 백업하려면 HotCopy를 사용해야합니다. 그런 다음 단순히 저장소를 복원해야합니다.

+1

나는 그가 훨씬 더 많이 포함하고있는 레포 (repo)에서 매우 복잡한 구조 (내부의 여러 움직임들)를 제거하는 것에 대해 이야기하고 있다고 생각한다. –

+0

당신은 이것을 위해 hotcopy를 사용할 수 없습니다. 저장소의 전체 사본을 만들 때만 사용할 수 있습니다 –

0

매우 간단하고 "이동 보존" 문제를 해결하는 또 다른 솔루션이 있습니다. Apache Subversion FAQ 항목 "How do I completely remove a file from the repository's history?"의 마지막 단락을 참조하십시오. 이 솔루션은 svndumpfilter에 의존하지 않습니다.

다음과 같은 단계를 수행 할 수 있습니다

  1. 구성 path-based authorization 규칙된 경로는 저장소에서 제거 할 파일이나 폴더의USERNAME 계정에 대한 읽기 액세스 거부를 역사.

    복수 명사에 유의하십시오 경로. 없애고 자하는 파일이나 폴더는 다른 이름을 갖거나 저장소 내역의 다른 위치에있을 수 있습니다. 거부 규칙을 설정할 때 이것을 고려하십시오.

  2. 빈 저장소를 생성

    ,

  3. 계정 USERNAME에서 대상 저장소에 svnsync 도구를 사용하여 소스 저장소를 복제합니다. svnsync과 저장소 동기화에 대한 자세한 내용은 SVNBook 장 "Repository Replication"을 참조하십시오.

svndumpfilter는 달리 svnsync 자동 기록을 검색 할 필요가 여전히 복사 작업을 수반하고있는 경우 유용 통상 추가로 읽을 소스 경로로 svn copy 동작을 변환한다. :)