svnからgitへの移行について
DESCRIPTION
SvnからGitへの移行についてTRANSCRIPT
Svn から Git への移行について2010/03/04 kanai
簡単に git の概要 git の特徴
分散リポジトリ(マスターリポジトリ、個人リポジトリ) リポジトリ間で相互に push 、 pull ( ファイルのやり取り ) が可能 commit で個人リポジトリを更新、 push でマスターを更新 commit 前に index に毎回 add をする必要がある。
git のよいところ リポジトリ作成が容易である .svn のようなものが各ディレクトリに作成されることはない。 パッチ的に修正部分の一部のみ commit することができる。 commit の取り消し、やり直しができる。 一時的な作業および履歴管理が個人リポジトリで完結可能 共同開発におけるブランチのマージが容易 リポジトリの個人分散により結果的に障害に強い。
Svn から Git への移行方法 git への移行方法にはなにがあるのだろうか?
git-svn Svn2git
git-svn git と svn を相互運用するのに最適。 ( svn リポジトリで個人的に git をインターフェイスととして運用したい時な
どに有用)
svn2git git-svn のラッパー
git-svn の利用 インストール ( ローカル環境 )
ローカル環境に svn リポジトリからチェックアウト
yum install git-svn
git svn clone --trunk=trunk --tags=tags --branches=branches http://svn.hogehoge.dev/hogehoge/
git-svn の利用 マスターリポジトリ(リモートリポジトリ環境)作成
ローカルリポジトリをマスターリポジトリにプッシュする
sudo su gitmk dir hogehoge.gitcd hogehoge.gitgit --bare init --share
git push git://git.hogehoge.dev/hogehoge.git master
git-svn の利用 実際開発に使うローカルリポジトリ用に再度 clone する。
おわり
git clone git://git.hogehoge.dev/hogehoge.git trunk
git-svn の利用 問題点など
svn の tags として指定されていたディレクトリを git のブランチとしてマッピングしてしまうのでどうもよろしくない。 git tag を実行してもバージョンリストが表示さない。
ということで svn2git を使うことにします。
git branch –rtags/rel-1.0 tags/rel-1.0.1 tags/rel-1.0.2 tags/rel-1.0.3 trunk
svn2git の利用 インストール ( ローカル環境 )
ローカル環境に svn リポジトリからチェックアウト
gem sources -a http://gems.github.comgem install nirvdrum-svn2git
svn2git http://svn.hogehoge.dev/hogehoge / --verbose --trunk trunk --branches branches --tags tags
マスターリポジトリ(リモートリポジトリ環境)作成
ローカルリポジトリをマスターリポジトリにプッシュする
sudo su gitmk dir hogehoge.gitcd hogehoge.gitgit --bare init --share
git remote add origin git://git.hogehoge.dev/hogehoge.git git push --allgit push --tags
svn2git の利用
svn2git の利用 実際開発に使うローカルリポジトリ用に再度 clone する。
おわり
git clone git://git.hogehoge.dev/hogehoge.git trunk
svn2git の利用 タグはどうなっているかというと・・・
ちゃんとマッピングされて認識されているようだ
ということで簡単に移行できました。
git tagrel-1.0rel-1.0.1rel-1.0.2rel-1.0.