Subversionでのリポジトリ管理をgitに切り替えるための変換作業


Subversionでのリポジトリ管理をgitに切り替えるための変換作業

事前準備

使うものとして
- SourceTree 2.4.7.0

これがインストール済みの環境であること

Subversionのリポジトリから最新ソースを取得

SourceTreeのターミナル機能を使って最新ソースを取得

SourceTreeのターミナルを起動

SourceTreeを起動し、画面右上にあるターミナルボタンを押下してターミナルを起動します。

作業ディレクトリを作成し移動

Subversionのソース一式を取得するルートディレクトリを用意し、ターミナルのカレントディレクトリをそこに移動します。

この手順では/c/projects/svn2gitをカレントディレクトリとして手順を進めます。

cd /c/projects/svn2git/

Subversionからソースを取得(と同時にgitへコンバート)

以下のコマンドを実行して、Subversionから最新ソースを取得します。

git svn clone --prefix svn/ -s https://SVNServer/svn/SVNProject/

このコマンドを実行したあと、OpenSSHというタイトルの画面が表示されることがある?
ここではpと入力してOKボタンを押下しました。

このあとなんかエラーが発生

$ git svn clone --prefix svn/ -s https://SVNServer/svn/SVNProject/
Initialized empty Git repository in C:/projects/svn2git/SVNProject/.git/
Error validating server certificate for 'https://SVNServer:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: SVNServer
 - Valid: from Jan 24 00:12:13 2018 GMT until Jan 22 00:12:13 2028 GMT
 - Issuer: SVNServer
 - Fingerprint: E9:50:C0:26:D3:E5:B5:07:AA:6F:32:3B:B0:09:89:90:4A:62:3B:55
Can't create session: Unable to connect to a repository at URL 'https://SVNServer/svn/SVNProject': Error running context: The server unexpectedly closed the connection. at /mingw32/share/perl5/site_perl/Git/SVN.pm line 310.

もう一度、以下のコマンドを実行する。

git svn clone --prefix svn/ -s https://SVNServer/svn/SVNProject/

すると、パスワードの入力を求められるので、対象ユーザのパスワードを入力してOKボタンを押下する。
※ここで表示されているユーザが、Subversionに存在しないといけないので注意。

ソースの最新取得が完了するとC:\projects\svn2git\SVNProjectが生成され、その中に.gitフォルダまで作成されて取得が完了した状態となる。

取得したソースをSourceTreeにAddする

SourceTreeを起動し、C:\projects\svn2git\SVNProjectフォルダを指定して、SourceTreeにAddする。

SourceTreeの設定からGitのリモートリポジトリを設定

SourceTreeの画面右上にある設定ボタンを押下し、デフォルトリモートにチェックを付けて、URLにGitリポジトリのURLを指定します。

SourceTreeからoriginにプッシュ

SourceTreeからoriginにプッシュします。
プッシュ先としてSubversionではなくoriginにすることに注意して下さい。

以上の手順でSubversion⇒Gitへのコンバートが完了です。