2012-05-16 2 views
1

Windows에서 한 서버에서 다른 서버로 SVN 저장소를 이동해야합니다. 트릭은 중첩 된 저장소 내의 프로젝트에서 트렁크, 분기 및 태그를 제외하고 모든 것을 제외하고자합니다.중첩 된 SVN 저장소 이동

현재 모든 프로젝트가있는 하나의 큰 저장소가 있습니다 (MyBigRepo). 현재의 구조는 다음과 같습니다

/Repositories/MyBigRepo/MyProject1/trunk 
/Repositories/MyBigRepo/MyProject1/branches 
/Repositories/MyBigRepo/MyProject1/tags 

/Repositories/MyBigRepo/MyProject2/trunk 
/Repositories/MyBigRepo/MyProject2/branches 
/Repositories/MyBigRepo/MyProject2/tags 

/Repositories/MyBigRepo/MyProject3/trunk 
/Repositories/MyBigRepo/MyProject3/branches 
/Repositories/MyBigRepo/MyProject3/tags 

는 난 단지 MyProject1를 이동하기를 원하지만 MyProject1 저장소에서 트렁크, 지점 및 태그를 주요 폴더 MyProject1를 제외하고 단지 이동에 내가 원하는. 내가 MyProject2 또는 MyProject3 이동하려는하지 않습니다. 즉, 내 목표은 아래와 비슷한 새 저장소를 형성하는 것입니다. 여기

/Repositories/NewRepo/trunk 
/Repositories/NewRepo/branches 
/Repositories/NewRepo/tags 

내가 일을하기 위해 만든 배치 파일입니다 :

:: Create a dump of the old repo 
svnadmin dump %OldRepoPath% > %MyBigRepoDumpFile% 

:: Remove the other projects 
svndumpfilter include "MyProject1" < %MyBigRepoDumpFile% > %MyProject1DumpFile% 

:: Create a new repo 
svnadmin create %NewRepoPath% 

:: Load the dump into the new repo 
svnadmin load %NewRepoPath% < %MyProject1DumpFile% 

내 문제는 일괄 여전히이 같은 %NewRepoPath%에서 MyProject1 디렉토리를 생성하는 것입니다 :

/Repositories/NewRepo/MyProject1/trunk 
/Repositories/NewRepo/MyProject1/branches 
/Repositories/NewRepo/MyProject1/tags 

인가를 거기에 내 덤프 파일에서 여분의 레벨 (MyProject1)을 제외하거나 레벨을 위로 이동하여 기록을 보존하는 방법이 있습니까?

답변

1

최선의 방법은 "있는 그대로"(추가 수준 있음) 이동 한 다음 svn copy을 통해 구조를 새 저장소에 다시 저장하는 것입니다.

덤프 파일 as described here을 조정할 수도 있습니다.

0

당신은 두 번 svndumpfilter에를 실행할 수 있습니다 (이미 수행 한 것처럼)

  1. 은 "/ 저장소/NewRepo/MyProject1 /"경로를 필터링,
  2. 는 '트렁크'필터링 ' 가지 "와"꼬리표 ".
+0

이 접근법에 다소 기술적 인 문제가 있습니다. 동일한 프로젝트의 트렁크, 분기 및 태그는 일반적으로 함께 결합되어 있으므로 svndumpfilter는이를 구분할 수 없습니다. 나는 비슷한 것을 한 번 시도했다. 며칠을 낭비했고 결국 포기했다. –

+0

''svndumpfilter include "trunk" "branches" "tags"<% MyProject1DumpFile %> % MyProject1DumpFile %'을 실행하면 빈 덤프 파일이 생깁니다. 왜이게 될지 아십니까? – jags0333