서브버전 저장소 통합하기

  • Post author:
  • Post category:
  • Post comments:1 Comment
  • Post last modified:February 8, 2020

상황은 이렇다.

서버 소스코드는 http://mycompany.com/svn/server 에 위치한 SVN 저장소에 있다. 클라이언트 소스코드는 이와 달리 http://mycompany.com/svn/client 에 있는데 이 둘을 하나로 통합하려 한다.

우선 클라이언트 저장소의 폴더 구조를 보자면 다음과 같다.

/trunk
 - /trunk/src
 - /trunk/src/client
 - /trunk/vendor
/tags
/branches
 - /branches/my-branch-001
 - /branches/my-branch-002

서버 저장소의 폴더 구조는 이보다 단순해서 다음과 같다.

/trunk
 - /trunk/src
 - /trunk/src/server
/tags
/branches

폴더 구조를 분석해보니 서버 저장소를 클라이언트 저장소에 통합하여 다음과 같이 편성하면 좋겠다 싶다.

/trunk
 - /trunk/src
 - /trunk/src/client
 - /trunk/src/server
 - /trunk/vendor
/tags
/branches
 - /branches/my-branch-001
 - /branches/my-branch-002

이렇게 편성하기에 앞서 SVN 저장소가 물리 디스크에 다음과 같은 폴더 구조로 배치되었다고 가정한다.

  • 클라이언트: D:\Repository\Server
  • 서버: D:\Repository\Client

이러한 상황에서 두 저장소를 원하는 대로 통합하려면 다음과 같은 절차를 따른다.

  1. 명령 줄(CMD.EXE)에서
    CD /D D:\Repository
  2. 서버 저장소 덤프 뜨기. 이때 /trunk/src/server만 덤프한다.
    svnadmin dump Server | svndumpfilter --drop-empty-revs --renumber-revs include trunk/src/server > Server.dump
  3. 덤프 뜬 내용물을 클라이언트 저장소에 통합하기
    svnadmin load Client --parent-dir=trunk/src/server < Server.dump

그리 어려운 부분은 없지만 중간에 –drop-empty-revs –renumber-revs 스위치가 무엇인지는 직관적이지 않다. 서버 저장소 중 일부만 가져다 복원한다. 그런데 기존 서버 저장소에 /trunk/src/empty라는 빈 폴더가 있다면 이 저장소는 복원되지 않는다. 그래서 /trunk/src/server 폴더와 상관이 없는 리비전이 있기 마련이다. 새로운 저장소에서 이러한 로그는 불필요하기 때문에 이전 대상에서 제외할 경우가 많은데 이 때 사용하는 스위치이다.

참고 문서

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] This post was mentioned on Twitter by lfvi, CHOI, Jaehoon. CHOI, Jaehoon said: New post: 서브버전 저장소 통합하기 http://bit.ly/h8DAHv […]