BLOGTIMES
2015/05/28

svn2git でリポジトリを git に移行

  git  migration 
このエントリーをはてなブックマークに追加

昔使っていた svn リポジトリのプロダクトを復活させる必要があったので、これを機に管理を git に移行することにしました。
移行に使ったのは svn2git というツール。

準備

まずは gem で svn2git をインストール

gem install svn2git

次に svn のログの author を git の author にマッピングするためのファイルを以下のような形式で作成しておきます。
~/.svn2git/authors

foo = foo bar <foo@example.com> baz = baz bar <baz@example.com>

svn -> git 変換

svn2git は処理を行ったマシンのローカルに git のリポジトリができます。また、チェックアウト時のようにディレクトリを新たに作らずに、直にカレントディレクトリにファイルが展開されるので、必ず新しいディレクトリを作ってから svn2git を起動する必要があります。例えばローカルに svn リポジトリがある場合であれば下記のような感じになります。

mkdir tmp cd tmp svn2git file:///path/to/svn/home/ -v

リモートサーバに反映

このままでリモートのサーバにコードが反映されていないので、以下の手順でリモートサーバにコードを反映します。

あらじめ github などでリモートサーバにリポジトリを作成し、URLを取得しておきます。
取得した URL を使って git にリモートサーバを登録します。

git remote add origin https://gitserver.example.com/path/to/repository.git # git remote rm //間違えた時はこれを使えばURLを削除できる

続いて以下のコマンドを実行すると実際にリモートにコードが反映されます。
接続先の URL が HTTPS の場合には以下のように GIT_SSL_NO_VERIFY=true が必要になるかもしれません。

GIT_SSL_NO_VERIFY=true git push -u origin master

ここまでの一連の作業で svn -> git 移行を行うことができました。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/7639
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン