TortoiseGitでSVNリポジトリを履歴を含めてGitに移行する


過去にSVNでソース管理していたシステムの改修が発生したタイミングでGitへ移行したので手順をまとめてみました。
開発PCは当時から新しくなっているのでSVN関連のアプリなんてないよ!と思っていましたが、移行にはGit系アプリだけでいいんです!!

実施した環境

  • PC:Windows10

  • SVN:VisualSVN

  • Git:GutBucket

    ※SVN,Gitともに社内オンプレサーバにあり

準備

1.Git for Windowsのインストール

下記からダウンロードしてインストール。
Git for Windows

2.TortoiseGitのインストール

下記からダウンロードしてインストール。
もし日本語化するなら日本語のLanguage Packも併せてダウンロードしてインストール
TortoiseGit

3.移行元SVNのリポジトリURLを取得

チェックアウトする時に使用していたURLです。
わからなければVisualSVNがインストールされているサーバに入り込んで対象のリポジトリを右クリックするとクリップボードにコピーできます。

4.移行先Gitのリポジトリを作成

先に空のリポジトリを作成しておく必要があります。
GitBucketにログイン→「New repository」

ラジオボタンを「Create an empty repository」にしておきます。

作成後に表示されるコマンドを確保

手順

ローカルにフォルダを用意

ソースをクローンするためのフォルダです。
どこでも構いません。

クローンする


フォルダを右クリック→Gitクローン(複製)


「URL」に準備3のURLを入力、「ディレクトリ」は用意したフォルダパス、下のほうの「SVNリポジトリから」をONにして、「ユーザ名」にSVNで使用しているユーザ名を入力します。

すると、途中で処理が止まってtortoisegit cli stdin wrapperのプロンプトが上がってきて英語のメッセージの後半が下記のようになっていると思います。(キャプチャを取り忘れました

(R)eject, accept (t)emporarily or accept (p)ermanently?

これは接続が正しいかを確認して、 t (一時的に信頼)か p (恒久的に信頼)を選ばせているようなので、問題なければどちらかの文字を入力すると処理が続きます。

この後、SVNのユーザ名に対するパスワードを入力するプロンプトが上がってくるので正しいパスワードを入力すると処理が完了します。
(Git用に変換しているらしく多少時間がかかりました)

無事成功!


履歴もちゃんと表示されています。

Gitリポジトリをリモートに追加

コマンドプロンプトやGit CMDでクローンしたフォルダに移動して下記を実行

git remote add origin ssh:対象のGitリポジトリURL

準備4で最後に表示されたコマンドを実行すればOKです。
※TortoiseGitでもできますがコマンドを実行したほうが断然速いです

pushする

対象フォルダを右クリック→TortoiseGit→プッシュ


Putty鍵の指定を必要に応じて行ってから実行します。

プッシュ成功。

GitBucket側で表示させてみると

履歴も表示されました。

おわりに

基本的にすべてTortoiseGitがやってくれるのでかなり楽にできました。
既にGitを使用する環境であれば簡単に移行できます。

参考