Windows PCのローカルにあるSVNベアリポジトリをローカルのGitベアリポジトリに移行する方法

手元でちょっとしたファイルのバージョン管理をしたいときにSVNを使ってきたけど、

やっぱりGitに移行した方がブランチをこまめに切れるなどして色々便利だと思ったので移行してみた。

ディレクトリパスの記法など細かなところで手こずったのでここに手順をメモしておく。

前提となる経験・知識

  • 以下のいずれかを使ってみたことがある。
    • コマンドプロンプト
    • Windows PowerShell
    • PowerShell Core
    • PowerShell
  • Gitの「クローン」「コミット」「プッシュ」等の概念を理解している。

やりたいこと

  • C:\aaa\svn_repo がSVNリポジトリ(ベアリポジトリ)の場所だとする。
  • C:\aaa\git_repo.git にGitリポジトリ(ベアリポジトリ)をつくり、これにSVNリポジトリの内容を引き継がせ、クローンして利用したいとする。
  • SVNリポジトリのコミット履歴はこんな感じになっているとする。(左右のドラッグで各コミットの概要が確認できる)

確認した環境

環境バージョン備考
Windows 11 Pro21H2
TortoiseSVN1.14.3 (64bit)SVNリポジトリの作成・運用に利用した。
Git2.35.1.windows.2以下の手順で必要。

手順

コンソール(PowerShell、コマンドプロンプトなどのいずれか)を開く。

次のコマンドを実行する。

git --version

Gitのバージョン番号が表示されない場合は、Gitがインストールされていないか、あるいはGitへのパスが通っていないので適宜対応する。

次のコマンドを実行し、空のフォルダを作成する。(このフォルダは後で削除する)

mkdir c:\aaa\tmp

次のコマンドを実行する。

git svn clone file:///c/aaa/svn_repo c:\aaa\tmp\

上手くいけばこういう状態になる。

次のコマンドを実行する。これにより、空っぽのGitリポジトリ(ベアリポジトリ)ができる。

cd c:\aaa
mkdir git_repo.git
cd git_repo.git
git init --bare --shared

次のコマンドを実行する。これにより、SVNリポジトリから取得したコミット履歴情報が先ほど作成したGitリポジトリにPushされる。

cd c:\aaa\tmp
git push --mirror c:\aaa\git_repo.git

次のコマンドを実行し、GitリポジトリにPushされたコミット履歴を確認する。確認を終了する場合はキーボードの「q」を押す。

cd c:\aaa\git_repo.git
git log

コミット履歴が確認できたら、c:\aaa\tmp フォルダは要らないので削除する。

c:\aaa\tmp フォルダのローカルリポジトリはPush先が “Subversion” に設定されており、変更をPushしようとしても先ほど作成した c:\aaa\git_repo.git にはPushできないのでもう要らない。

ここまでできたら、c:\aaa\git_repo.git をクローンして使っていこう!

(引き続きGitコマンドを使っていってもよいし、SourceTreeやGitKrakenなどのクライアントツールを使ってもよい)

コメントする