[도서 정리] 9. Git 과 여타 버전 관리 시스템 - ProGit |
9.1. Git: 범용 Client
* Git 과 Subversion
-
git 이 자랑하는 또 하나의 기능은 git svn 이라는 양방향 subversion 지원 도구이다.
git 을 subversion 클라로 사용할 수 있으므로 로컬에서는 git 의 기능을 활용하고 push 할 때는 subversion 서버에 push 할 수 있다.
-
git 과 subversion 을 이어주는 명령은 git svn 으로 시작한다.
우리가 로컬 브랜치와 머지를 맘대로 쓸 수 있다 하더라도 최대한 일직선으로 히스토리를 유지하는 게 좋다.
git 저장소처럼 사용하지 않기 때문이다.
히스토리를 재작성해서 push 하지 말아야 한다. git 을 사용하는 동료들끼리 따로 git 저장소에 push 하지도 말아야 한다.
subversion 은 단순하게 일직선 히스토리만 가능하다.
-
$ git svn clone url -T turnk -b branches -t tags
이 명령은 git svn init 과 git svn fetch 명령을 순서대로 실행한 것과 같다.
subversion 이 어떤 브랜치 구조를 가졌는지 git 에 알려준다.
subversion 표준 형식과 다르면 옵션 부분에 알맞은 이름을 지정해준다.
표준 형식을 사용하면 간단히 -s 옵션을 사용하면 된다.
-
push 는 git svn dcommit 을 이용한다.
push 하기 전에 upstream 과 머지해야 하는 git 과 달리 git svn 은 충돌이 날 때만 서버에 업데이트할 것이 있다고 알려준다. (subveresion 처럼). 이 점을 꼭 기억해야 한다.
push 시 conflict 가 있다면 git svn rebase 로 머지할 후 다시 push 해주어야 한다.
-
git svn fetch 명령은 가져오기만 하고, git svn rebase 는 pull 의 역할을 한다.
-
git svn 으로 subversion 서버에 push 할 때에는 브랜치를 머지하지 않고 rebase 해야 한다.
subversion 은 일직선 히스토리밖에 모르고, git 의 merge 도 알지 못한다.
머지를 한 경우에는 git merge —squash 한 것 마냥 결과가 합처진 머지 커밋 하나만 볼 수 있다.
-
subversion 의 브랜치는 git 의 브랜치와 달라서 가능한 사용하지 않는 것이 좋다.
그래서 자세한 내용은 생략한다.
-
git svn 명령은 git 으로 전향하기 쉽도록 subversion 에 있는 것과 비슷한 명령어를 지원한다.
-
git svn log 명령은 svn 형식으로 히스토리를 보여준다.
이는 오프라인에서 동작한다. 그리고 서버로 전송한 커밋만 출력해준다.
SVN 의 svn log 명령어는 히스토리 데이터를 조회할 때 서버가 필요하기 때문이다.
-
git svn blame file_name 으로 svn annotate 명령을 흉내낼 수 있다.
이 명령도 아직 서버로 전송하지 않은 커밋은 보여주지 않는다.
$ git svn blame <file_name>
-
git svn info 명령으로 svn info 를 대신할 수 있다.
-
svn:ignore 를 .gitignore 로 만들 수 있다.
git svn create-ignore 명령은 .gitignore 를 만들어준다.
git svn show-ignore 는 리다이렉트 해서 .git/info/exclude 등으로 정보를 옮기는 데 좋다.
$ git svn create-ignore
$ git svn show-ignore
* Git 과 Mercurial
-
DVCS 중 git 이외에는 mercurial 이 가장 많이 사용되는 녀석이며 git 과 닮은 점이 많다.
mercurial 로 코드 관리하는 프로젝트에서 git 을 쓸 수 있다.
git-remote-hg 를 사용하면 된다.
-
자세한 내용은 생략한다.
* Git 과 Perforce
-
Perforce 는 기업에서 많이 사용하는 버전 관리 시스템이다.
Perforce 와 git 을 함께 사용하는 방법은 두 가지다.
첫번째는 Perforce 가 제공하는 git fusion 을 사용하는 방법이다.
두번째 방법은 git-p4 라는 클라이언트 bridge 를 사용하여 git 을 perforce 의 클라로 사용하는 것이다. 이 방법은 perforce 서버를 건드리지 않아도 된다.
-
자세한 내용은 생략!
* Git 과 TFS
-
윈도우에서 개발한다면 MS 의 Team Foundation Server(TFS)를 쓸 가능성이 크다.
TFS 는 결함과 작업 항목을 추적하고, 스크럼 등의 개발 방법을 지원하고, 코드 리뷰와 버전 컨트롤 등을 모아놓은 협업 도구다.
TFVS (Team Foundation Version Control)은 VCS 이고, TFS 는 git 과 tfvs 같은 vcs 를 사용하는 다기능 서버이다.
TFS 에서는 대부분 TFVC 를 사용하지만 2013년 이후에 나온 제품부터는 git 도 지원한다.
-
자세한 내용은 생략한다.
9.2. Git 으로 옮기기
* Subversion
-
git svn clone 명령으로 저장소를 가져오고 나서 subversion 서버는 중지하고 git 서버를 만들고 사용하면 된다.
author 를 매칭하는 작업을 해주는 것이 좋다.
…..
* Mercurial
-
hg-fast-export 툴을 사용하면 된다.
….
* Perforce
-
git-p4 나 Perforce Git Fusion 을 이용하면 된다.
….
* TFS
-
git-tfs, git-tf 를 이용하면 된다.
….
* 직접 Importer 만들기
-
사용하는 VCS 가 다른 종류라면 인터넷에서 적당한 Importer 를 찾아야 한다.
사람들이 잘 쓰지 않는 시스템을 사용하고 있는데 적당한 importer 를 찾지 못했거나 부족해서 좀 더 고쳐야 한다면 git fast-import 를 사용하면 된다.
…..
9.3. 요약
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
[도서 정리] 11. 다양한 환경에서 Git 사용하기 - ProGit (0) | 2020.01.16 |
---|---|
[도서 정리] 10. Git 의 내부 - ProGit (0) | 2020.01.15 |
[도서 정리] 8. Git 맞춤 - ProGit (0) | 2020.01.13 |
[도서 정리] 7. Git 도구 #2 - ProGit (0) | 2020.01.12 |
[도서 정리] 7. Git 도구 #1 - ProGit (0) | 2020.01.11 |
댓글