카테고리 없음

SVN 저장소를 Git으로 백업 및 이관하기 (SVN → Git Migration)

싹다배워 2026. 3. 6. 22:03
반응형

사내 프로젝트는 오래전부터 SVN(Subversion) 으로 소스코드를 관리하고 있었다.
하지만 대부분의 개발 조직이 Git 기반 협업 환경(GitHub / GitLab 등) 을 사용하고 있기 때문에, 기존 SVN 저장소를 사내 Git 서버로 백업 및 이관하는 작업을 진행하게 되었다.

이번 글에서는 실제 프로젝트를 이관하면서 진행했던 과정과 그 과정에서 겪었던 트러블슈팅까지 함께 정리해보려고 한다.


1. 목표

이번 작업의 목적은 단순히 소스를 옮기는 것이 아니라 아래와 같은 조건을 만족해야 했다.

  • 기존 SVN 저장소는 그대로 유지
  • Git으로 전체 소스 백업
  • SVN Commit History 유지
  • 사내 GitHub 서버(Gitea)로 Push

즉 구조는 다음과 같다.

SVN (기존 운영)
        ↓
Git 로컬 변환
        ↓
사내 GitHub 백업

 


2. 준비 환경

OS Windows
Tool Git
작업 경로 D:\svn_migration
SVN 저장소 https://test.com/project
Git 서버 사내 GitHub

 

먼저 Git에 SVN 명령어가 포함되어 있는지 확인한다.

git svn --version

 


3. SVN 구조 확인

SVN → Git에서 가장 중요한 단계는 바로 SVN 저장소 구조 확인이다.

svn list https://test.com/project

 

실행 결과(EX)

WebContent/
classes/
doc/

 

즉 SVN 구조가 다음과 같이 되어 있었다.

SVN
 └ project
     ├ WebContent
     ├ classes
     └ doc

 

여기서 중요한 점은 SVN 표준 구조(trunk / branches / tags)가 아니라는 것이다.

이 구조가 없기 때문에 git svn clone 명령어를 사용할 때 옵션을 다르게 줘야 한다.


 

4. SVN → Git 변환

작업 폴더 생성

D:\svn_migration

 

다음 명령어 실행(생성한 경로에서 실행이 필요)

git svn clone https://test.com/project --trunk=. project

 

옵션 설명

git svn clone SVN 저장소를 Git으로 변환
--trunk=. 현재 루트를 trunk로 인식
homepage 로컬 폴더

 

실행하면 다음과 같이 SVN revision이 Git commit으로 변환된다.

r1 = a3f4e13213
r2 = b4c5d61241
r3 = 7a812442c0
...

 

5. 변환 완료 확인

변환이 완료되면 Git 로그를 확인한다.

cd project
git log

 

정상이라면 다음과 같이 SVN commit history가 Git commit으로 변환된 것을 확인할 수 있다.

commit a12345
Author: kim
게시판 수정

commit b23456
Author: lee
로그인 기능 추가

 


6. Git 서버 연결

GitHub에 Repository를 생성한 뒤 remote를 연결한다.

git remote add origin http://ip:port/github/project.git

 

연결 확인

git remote -v

 


7. GitHub Push

메인 브랜치 설정 후 push

git branch -M main
git push -u origin main

 

8. 트러블슈팅

1. trunk 관련 오류

처음에는 다음 명령어를 사용했다.

git svn clone https://test.com/project --stdlayout project

 

하지만 다음과 같은 오류가 발생했다.

fatal: refs/remotes/origin/trunk: not a valid SHA1

 

원인은 SVN 저장소에 trunk 구조가 없기 때문이었다.

 

아래와 같은 명령어로 해결

git svn clone https://test/homepage --trunk=. homepage

 


2. Git commit이 없는 문제

clone 이후 다음 오류 발생

fatal: your current branch 'master' does not have any commits yet

 

이 역시 SVN 구조를 잘못 인식해서 clone이 정상적으로 완료되지 않은 것이었다.

SVN 구조 확인 후 --trunk=. 옵션으로 해결..


 

3. Git Push 인증 오류

Git push 시 다음 오류 발생

fatal: Authentication failed

 

원인

  • Git 서버 인증 문제

해결

  • Git 계정 인증 (아이디 방식 사용)
git remote set-url origin http://아이디@ip:port/github/project.git

ex) git remote set-url origin http://test@127.0.0.1:1000/github/project.git

 

9. 최종 결과

최종적으로 다음 구조로 이관이 완료되었다.

SVN (기존 유지)
     │
     └── Git Migration
            │
            └── GitHub 백업

반응형