본문 바로가기
  • 개발 로그를 기록하며,
    복습하고 깊이를 더해갑니다.
🛠️DevTools/Git

[Git] Svn 프로젝트 Git으로 마이그레이션 하기 (git svn)

by inbeom 2025. 5. 15.
개인 프로젝트라면 그냥 프로젝트를 복사해서 Git으로 올려도 되지만.. History, Branch 등의 관리를 위해 마이그레이션 하는 것을 권장한다.

https://www.studytonight.com/git-guide/svn-to-git-migration

 

Git이 설치된 환경에서 PowerShell을 관리자 권한으로 실행하여 진행한 내용입니다.

git svn --version
  • 위 명령어가 정상 출력되면 git-svn 플러그인이 설치된 것이다.
  • 설치되어 있지 않다면 Git을 재설치하거나 https://git-scm.com 에서 설치 확인

 

🛠️ 1. SVN → Git 변환 (로컬 저장소 생성)

git svn clone http://svn.example.com/project --stdlayout --authors-file=authors.txt my-git-project

 

 

옵션 설명

  • --stdlayout: SVN의 표준 디렉터리 구조(trunk, branches, tags)를 사용하는 경우 
  • --authors-file: 유저 매핑 파일 사용 (아래 내용 참고)
  • my-git-project: Git 저장소로 변환할 디렉터리 이름

⚠️ 주의사항

  • 변환 시 모든 커밋 히스토리를 가져오기 때문에 시간이 오래 걸릴 수 있다.
  • 과정 중에 SVN 사용자 계정을 입력하라는 메시지가 나오면, 인증 정보 입력
  • SVN 사용자 정보를 Git 커밋 작성자에 매핑하고 싶다면, 작성자 매핑 파일 사용

🔽 유저 매핑 파일 예시 (authors.txt)

svnuser1 = 홍길동 <hong@example.com>
svnuser2 = 김개발 <kim@example.com>
유저 매핑 파일 사용은 선택 사항이며, LDAP 기반 인증을 사용하는 경우 git svn이 자동으로 인식하여 매핑된다.
 
 

 

📁 2. 디렉터리 이동

cd my-git-project
 
위에서 로컬 저장소 생성 작업이 정상적으로 완료되었다면 현재 위치에 프로젝트 명으로 된 디렉터리가 생겼을 것이다.
다음 작업을 위해 프로젝트 디렉터리로 이동한다. (디렉터리/파일 목록 확인: ls)

 

☁️ 3. GitLab (GitHub) 원격 저장소 생성

GitLab 또는 GitHub에서 마이그레이션을 진행할 새 프로젝트(빈 저장소)를 생성한다.

(Push 시 충돌 발생할 수 있으니 README, .gitignore는 생성하지 않는 것이 좋다)

 

🔗 4. GitLab 원격 저장소 연결


새로 생성한 원격 저장소 주소를 복사하여 현재 로컬 Git 저장소에 원격 저장소를 등록한다.

git remote add origin http://127.0.0.1:8888/yourname/my-git-project.git
 

🌿 5. 원격 브랜치를 로컬 브랜치로 전환

git svn으로 클론하면 브랜치가 remotes/ 아래에 생성된다. 

git branch -r # 원격 브랜치 목록 확인

 

지금까지는 아직 Git 브랜치가 아니고 Svn 브랜치를 Git이 내부적으로 참조하는 형태이다. Git에서 브랜치로 인식하게 하려면 로컬 브랜치로 전환 해줘야 한다.

git branch master remotes/trunk
git branch -r 명령어로 확인한 remotes 브랜치들을 하나씩 Git 로컬 브랜치로 전환해야 한다. 

 

🚀 6. GitLab에 전체 푸시

이제 Git의 로컬 브랜치로 인식되었으니 원격 저장소로 PUSH 할 수 있다.
git push -u origin --all # 모든 브랜치 푸시 
git push origin --tags # 모든 태그 푸시

❓ tags는 무엇인가

  • Svn의 tags 디렉터리도 Git에서는 태그(Release 지점) 로 전환된다.
  • 해당 태그 정보를 GitLab에도 반영하려면 명시적으로 푸시해야 한다.

 

 

728x90