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

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

## 実施した環境
- PC：Windows10

- SVN：VisualSVN
- Git：GutBucket

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

## 準備
##### １．Git for Windowsのインストール
下記からダウンロードしてインストール。
[Git for Windows](https://gitforwindows.org/,"Git for Windows")
##### ２．TortoiseGitのインストール
下記からダウンロードしてインストール。
もし日本語化するなら日本語のLanguage Packも併せてダウンロードしてインストール
[TortoiseGit](https://gitforwindows.org/,"Git for Windows")
##### ３．移行元SVNのリポジトリURLを取得
チェックアウトする時に使用していたURLです。
わからなければVisualSVNがインストールされているサーバに入り込んで対象のリポジトリを右クリックするとクリップボードにコピーできます。

![スクリーンショット 2021-02-15 143417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/8a7aeed3-87df-4c54-e571-d955c2f66f3a.png)

##### ４．移行先Gitのリポジトリを作成
先に空のリポジトリを作成しておく必要があります。
GitBucketにログイン→「New repository」
![スクリーンショット 2021-02-15 130714.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/ebbb5d80-cde5-b6e5-9c2e-18f957c419cd.png)
ラジオボタンを「Create an empty repository」にしておきます。
![スクリーンショット 2021-02-15 130602.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/83870739-c33d-5f5a-ce6e-e24eca66cb98.png)
作成後に表示されるコマンドを確保


## 手順
#### ローカルにフォルダを用意
ソースをクローンするためのフォルダです。
どこでも構いません。

#### クローンする
![スクリーンショット 2021-02-15 112837.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/32ff17b7-6379-4fef-94da-30e4167a96e9.png)
フォルダを右クリック→Gitクローン（複製）

![スクリーンショット 2021-02-15 113009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/37e1d477-11f8-16dc-7664-ff8f0dc876d1.png)
「URL」に**準備3**のURLを入力、「ディレクトリ」は用意したフォルダパス、下のほうの「SVNリポジトリから」をONにして、「ユーザ名」にSVNで使用しているユーザ名を入力します。

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

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

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

この後、SVNのユーザ名に対するパスワードを入力するプロンプトが上がってくるので正しいパスワードを入力すると処理が完了します。
（Git用に変換しているらしく多少時間がかかりました）
![スクリーンショット 2021-02-15 112703.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/0b3ee110-9cd7-9ebb-99fc-cacea7ec6a79.png)
無事成功！

![スクリーンショット 2021-02-15 113301.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/0843b8bb-a1a9-f7a4-ecbd-ee973f0a34ac.png)
履歴もちゃんと表示されています。


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

```powershell
git remote add origin ssh:対象のGitリポジトリURL
```
**準備4**で最後に表示されたコマンドを実行すればOKです。
※TortoiseGitでもできますがコマンドを実行したほうが断然速いです

#### pushする
対象フォルダを右クリック→TortoiseGit→プッシュ
![スクリーンショット 2021-02-15 151657.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/f7ba96a3-b4c5-4b42-aaec-20f30535e6df.png)
![スクリーンショット 2021-02-15 114248.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/92b7d1c9-3045-fef8-aa45-06c9ecbee7da.png)
Putty鍵の指定を必要に応じて行ってから実行します。
![スクリーンショット 2021-02-15 130406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/ae5b9b23-1397-a788-20f9-b23f74bf33cb.png)
プッシュ成功。

GitBucket側で表示させてみると
![スクリーンショット 2021-02-15 130949.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/738431/63d2c901-37b9-1e74-8c70-0a5eefd8e950.png)
履歴も表示されました。

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

## 参考
- [【SVN,Git】TortoiseGitを用いてコミット履歴込みでSVNリポジトリをGitへ移行する。](https://qiita.com/msht0511/items/96a9a5544d5464a9dc1c)