Skip to content

Latest commit

 

History

History
252 lines (210 loc) · 10.3 KB

import-bzr.asc

File metadata and controls

252 lines (210 loc) · 10.3 KB

Bazaar

Bazaar 또한 Git과 비슷한 DVCS 도구이기 때문에 Bazaar 저장소를 Git 저장소로 변환하는 것은 쉬운편이다. 우선 이 작업을 하려면 bzr-fastimport 플러그인이 필요하다.

bzr-fastimport 플러그인 다운로드

bzr-fastimport 플러그인을 설치하는 방식은 Unix 비슷한 환경과 Windows 환경이 매우 다르다. 우선 Unix 비슷한 환경에서는 운영체제에서 제공하는 패키지 관리자를 통해 bzr-fastimport 패키지를 설치하는 방법이 가장 쉽다.

예를 들어 Debian 이나 파생 Linux라면 다음과 같이 bzr-fastimport 를 설치할 수 있다.

$ sudo apt-get install bzr-fastimport

RHEL이나 파생 Linux라면 다음과 같이 bzr-fastimport 를 설치할 수 있다.

$ sudo yum install bzr-fastimport

Fedora release 22 이상이라면 dnf를 사용하여 bzr-fastimport 를 설치할 수 있다.

$ sudo dnf install bzr-fastimport

패키지 관리자 도구가 없는 경우라면 다음과 같이 Python을 이용하여 플러그인을 설치할 수 있다.

$ mkdir --parents ~/.bazaar/plugins     # creates the necessary folders for the plugins
$ cd ~/.bazaar/plugins
$ bzr branch lp:bzr-fastimport fastimport   # imports the fastimport plugin
$ cd fastimport
$ sudo python setup.py install --record=files.txt   # installs the plugin

bzr-fastimport 플러그인을 사용하려면 Python의 fastimport 모듈 또한 필요하다. 다음과 같은 명령으로 fastimport Python 모듈이 설치되어 있는지, 설치를 어떻게 하는지 살펴볼 수 있다.

$ python -c "import fastimport"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named fastimport
$ pip install fastimport

위 방식이 잘 동작하지 않는 경우 https://pypi.python.org/pypi/fastimport/ 에서 바로 내려 받거나 도움을 얻을 수 있다.

Windows 에서 bzr-fastimport 는 Git 설치시 Standalone 버전이나 기본 설치(모든 체크박스가 설정되)의 경우 함께 설치된다. 따라서 따로 더 설치 작업이 필요하지 않다.

이 시점에서 Bazaar 저장소를 Git 저장소로 변환할 때 브랜치를 하나만 사용하는지 혹은 브랜치를 여러개 사용하는지에 따라 변환 작업이 달라진다.

한 브랜치만 사용하는 프로젝트

cd 명령으로 Bazaar 저장소가 위치한 디렉토리로 이동하고, Git 저장소를 init 한다.

$ cd /path/to/the/bzr/repository
$ git init

다음과 같이 간단한 명령으로 Bazaar 저장소를 Git 저장소로 변환할 수 있다.

$ bzr fast-export --plain . | git fast-import

프로젝트 크기에 따라 수 초 혹은 수 분 내에 Bazaar 저장소의 내용이 Git 저장소에 담길 것이다.

메인 브랜치 하나와 작업 브랜치 하나를 사용하는 프로젝트

여러 브랜치를 사용하는 Bazaar 저장소도 Git 저장소로 변환할 수 있다. 예를 들어 두 개의 브랜치를 사용한다고 가정해보자. 한 브랜치는 메인 브랜치 (myProject.trunk), 다른 브랜치는 작업 브랜치 (myProject.work) 인 경우가 있을 수 있다.

$ ls
myProject.trunk myProject.work

이 위치에서 새로 Git 저장소를 init 하고 cd 명령으로 이동한다.

$ git init git-repo
$ cd git-repo

trunk 브랜치의 내용을 master 브랜치로 가져온다.

$ bzr fast-export --export-marks=../marks.bzr ../myProject.trunk | \
git fast-import --export-marks=../marks.git

work 브랜치의 내용을 work 브랜치로 가져온다.

$ bzr fast-export --marks=../marks.bzr --git-branch=work ../myProject.work | \
git fast-import --import-marks=../marks.git --export-marks=../marks.git

git branch 명령으로 master 브랜치와 work 브랜치를 확인할 수 있다. 히스토리를 확인하여 완전히 저장소와 브랜치의 내용이 변환된 것을 확인한 후 위 과정에서 생성된 marks.bzr, marks.git 파일을 삭제한다.

Staging Area를 동기화

위 과정을 실행하고 나면 하나 혹은 여러 브랜치의 히스토리가 Git 저장소 히스토리로 변환되었지만 Staging Area와 워킹 디렉토리가 HEAD 와 동기화가 이루어지지 않은 상태이다. 다음 명령으로 쉽게 HEAD 와 동기화를 시킬 수 있다.

$ git reset --hard HEAD
.bzrignore로 무시하는 파일 동일하게 무시

파일 무시하기 내용을 살펴볼 차례이다. 우선 먼저 해야 할 일은 .bzrignore 파일을 .gitignore 파일로 이름을 변경하는 것이다. .bzrignore 파일이 "!!", "RE:" 문자열로 시작하는 패턴을 포함한다면 이를 적절한 Git 패턴으로 변경하여 .gitignore 파일에 작성해야 한다.

위 작업을 마치고 난 후 이제 이 변경사항에 대한 커밋을 작성할 차례이다.

$ git mv .bzrignore .gitignore
$ # modify .gitignore if needed
$ git commit -am 'Migration from Bazaar to Git'
서버로 저장소 전송

고생하셨수다. 이제 서버 혹은 리모트 저장소로 Push 할 수 있다.

$ git remote add origin git@my-git-server:mygitrepository.git
$ git push origin --all
$ git push origin --tags

이렇게 전송한 리모트 저장소를 Git 저장소로 사용할 수 있다.