保守しているプログラムのバージョン管理をSVNからGitに移行することになりました。
バージョン管理のクライアントTortoiseSVNを使っています。
今回はTortoiseGitを使ってSVNリポジトリをGitリポジトリに変換してGitHubのmainブランチに移行するところまでの手順を備忘録として残しておこうと思います。
前提条件
- 今までソースのバージョン管理をSVNで行っており、すでにSVNのリポジトリを管理している。
- バージョン管理のクライアントソフトウェアはTortoiseSVNを使用
- 移行作業を行うパソコンはWindows10
- GitHubへのユーザー登録が既に完了している。
大まかな手順
- Git for Windowsのインストール
- TortoiseGitのインストール
- TortoiseGitの日本語化
- TortoiseGitのデフォルトブランチ名をmainに変更
- TortoiseGitでローカルリポジトリを作成
- GitクローンでSVNからGitに変換
- GitHubのリポジトリにプッシュ
移行手順
Git for Windowsのインストール
まずは、移行作業を行うパソコンにGit for Windowsをインストールします。以下のサイトからgit for Windowsをダウンロードしてきます。
ダウンロードボタンをクリックするとexeファイルがGit-x.xx.xx-64-bit.exe(xxにはバージョン番号が入ります)がダウンロードされるので実行します。(私がダウンロードしたときは2.37.3でした。)
とくにこだわりがなければ、デフォルトのままで[次へ]と進んでいけばOKです。
TortoiseGitのインストール
上述のGit for WindowsをインストールしてGitコマンドを駆使すれば、移行はできますがGitコマンドをいちいち覚えるのが面倒なのでGitコマンドを簡単に扱えるTortoiseGitをインストールします。TortoiseGitは以下のURLからダウンロードしてインストールします。
ダウンロードをクリック
Windows10にインストールするので64bit版をクリック
こちらもデフォルトで[Next]でのインストールでOKです。
TortoiseGitの日本語化
以下のURLへアクセスしてスクロールすると下のほうにlanguagePackもあるので64bitの日本語のSetupからインストールします。こちらもデフォルトのままでOKです。
後は、任意のフォルダを右クリックすると以下のようなメニューが表示されると思います。
そこでTortoiseGit→settingsを選択します。
GeneralのLangugeを[日本語(日本)]に変更すると日本語表記になります。
TortoiseGitのデフォルトブランチ名をmainに変更
上記でGitを使用する準備ができました。これからTortoiseGitでリポジトリを作成していきますが、
最終的にGitHubまで移行することを想定して、デフォルトブランチを変更しておきます。
Gitでは、リポジトリを作成したときに自動的に作成されるデフォルトブランチというものがあって
GitHubで作成するとデフォルトブランチ名がmainなのに対してTortoiseGitで作成するとmasterという名前で作成されます。
後で変更することも可能ですが、GitHubに移行したときにmainブランチとmasterブランチが共存してしまいややこしかったので先に変更しておきます。
変更する方法は、作業用PCの適当なフォルダで右クリックすると以下のようなメニューが表示されるのでSettingsを選択します。
[Git]→[全ユーザ共通設定を編集]をクリック。
以下のようにconfigが編集できる画面になるので赤枠のdefaultBranchをmasterからmainに変更してOKボタンを押すと完了です。defaultBranch = main
この設定でデフォルトブランチの名前がmainとなるのでGitHubに移行するときに混乱せずに移行ができます。
TortoiseGitでローカルリポジトリを作成
次に作業するPCにローカルリポジトリを作成します。
まず、ソース管理を行いたいフォルダを新規作成します。作成する場所やフォルダ名は自由でOKです。
GitクローンでSVNからGitに変換
次に作成したフォルダ内で右クリック→Gitクローン複製を選択します。
以下の画面が表示されるの各項目に入力し、OKを押します。各項目に入力する内容は以下の通り。
OKボタンを押すと処理が始まります。コミットの履歴などもすべて取得しているので結構時間がかかります。以下のように成功と表示されればOKです。
GitHubのリポジトリにプッシュ
上述の作業でSVNリポジトリからGitリポジトリに移行されました。続いて移行したGitリポジトリをGitHubにプッシュします。GitHubにログインしてRepositoriesタブに移動します。以下の画面は、まだリポジトリが作成されていない状態です。[New]ボタンでリポジトリを作成します。
Repository nameに好きな名前を付けてCreate Repositoryボタンを押します。
※今回は公開したくないソースなのでプライベートリポジトリで作成していますが、公開したい場合はパブリックに設定します。
以下のような画面になったらOKです。ここで必要なのは赤枠のリポジトリのURLです。右側にコピーマークがあるのでコピーしておきます。
これでGitHub側にリポジトリが作成されました。最後に先ほど移行したGitリポジトリをGitHubに移行します。作成したGitリポジトリを右クリック→TortoiseGit→プッシュを選択します。
以下の画面で管理ボタンをクリックします。
リポジトリ作成時にコピーしたGitHubのURLをコピーして貼り付けます。
以下の画面に戻るのでそのままOKボタンを押します。
成功の画面が表示されれば移行完了です。
最後にGitHubで移行されていることを確認します。ソースの履歴は以下の赤枠部分をクリックするとみることが可能です。
移行したみた感想
いろいろ試してみた結果、コミット履歴も含めての移行となるとTortoiseGitで移行するのが一番簡単でした。(TortoiseSVNをずっと使ってたからだと思います。)
悩んだところとして、GitHubのデフォルトブランチがmainなのに対してTortoiseGitのデフォルトブランチはmasterとなっていたので、プッシュしてもmainとmasterのブランチが二つできてしまい、プルリクエストでマージしようとしてもできず苦労しました。上述でもあるとおり、TortoiseGitのデフォルトブランチをmainに変えてpushするという手順に行きつくまで結構時間を費やしてます。
正直もっと簡単な手順がありそうですがとりあえず、コミット履歴も移行できたのでよしとします。
他におすすめの移行方法等がありましたらコメントいただけるとうれしいです。
コメント