회사 내에서 SVN 을 GIT 으로 이전할 때 정리하여 작성했던 내용입니다.
GIT 저장소 준비
$ git clone <git저장소주소> <폴더이름>
SVN 으로부터 Clone
$ git svn clone <svn저장소주소> <위의폴더이름> -s
# ex) git svn clone svn://svn.somehost.com/some_repo some_repo_folder -s
- rev-parse --git-path svn: command returned error: 127 오류날 경우
- git 저장소 폴더로 들어가서 아래 명령어를 실행한다.
$ git svn gc
다시 clone 명령어 실행해서 이어서 진행한다.
브랜치 확인
로컬, 원격 저장소에 모두 다 제대로 불러왔는지 확인한다.
$ git branch -a
trunk 로 내용 가져오기
$ git checkout trunk
$ git pull origin master --allow-unrelated-histories
무시할 파일 목록 가져오기
$ git svn show-ignore > .gitignore
SVN 저장소 관련 정보 제거
$ cd .git
$ vi config
SVN 저장소 주소가 있는 관련 정보를 제거한다.
파일 커밋
# 저장소 root에서 진행
$ git add .
$ git commit -m "init commit"
TRUNK 병합 후 Push
$ git checkout master
$ git merge trunk
$ git push origin master
더보기
(Submodule 필요 시) 서브 모듈 추가
서브 모듈 추가할 때 SSH 방식이 아닌 HTTPS 방식의 주소로 추가한다.
$ git submodule add https://gitlab.somehost.com/some-group/some-submodule-repo.git ./some-submodule-repo
그러면 .gitmodules 파일이 추가되는데 https 경로가 아닌 상대 경로를 지정해준다.
# 아래의 url 같이 상대 경로로 변경해주자
[submodule "some-submodule-repo"]
path = some-submodule-repo
url = ../../some-group/some-submodule-repo.git
https://docs.gitlab.com/ee/ci/git_submodules.html#configuring-the-gitmodules-file
Submodule을 이용하기 위해서는 심볼릭 링크을 만들어서 이용해야 하는데 만들 때 반드시 절대 경로가 아닌 상대 경로로 연결을 해주어야 한다.
SVN 에서 external 연결된 경우들이 있는데 이 항목들을 참고해서 심볼릭 링크를 연결한다.
$ ln -s <원본파일 또는 디렉토리> <심볼릭 링크 이름>
그리고 커밋을 해주고 push를 해준다.
# 저장소 root에서 진행
$ git add .
$ git commit -m "add submodule external files"
$ git push origin master
'프로그래밍 > GIT' 카테고리의 다른 글
[GIT] 특정 시점에서의 변경 내역만 되돌리기 (0) | 2023.09.14 |
---|---|
[GIT] GIT 원격 origin 변경 방법 (0) | 2022.09.21 |
[GitLab] rsync 를 이용한 cicd 자동화 배포 (0) | 2022.06.09 |
[GIT] git add * 과 git add . 차이 (0) | 2019.08.29 |
[GIT] protocol https not supported or disabled in libcurl 해결 방법 (0) | 2016.03.27 |