移行

移行

この移行ガイドでは、移行期間中には SVN から Git への一方向同期のみを行なうことを推奨しています。即ち、Git の慣熟期間中はチームメンバーによるコミットは引き続き SVN リポジトリに対するものに限るのです。切り替えの準備が整った時点で、SVN リポジトリはそれがどのような状態であろうともそこで使用停止します。そして開発者はそれぞれのローカルリポジトリに対してコミットを開始し、Bitbucket を経由してそれを共有します。

Git 移行: SVNからGitへの一方向同期

SVN から Git への不連続的な切り替えを行うことで極めて直観的な移行が可能になります。すべての開発者は今後使用する新しい Git ワークフローを理解しているはずであり、また Bitbucket からクローンしたローカルリポジトリ上で Git コマンドを使う練習時間を十分に与えられたはずです。

このページでは、移行の最後のステップをひとつずつガイドします。

Git リポジトリの同期

Git への移行を最終的に実行する前に、SVN リポジトリにコミットされた新しい変更がすべて Git リポジトリに反映されていることを確認しなければなりません。これは、同期のステップで説明した処理と同じ処理を実行することによって可能です。

git svn fetch java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

SVNリポジトリのバックアップ

Git への切り替え以前の履歴を移行後の Git リポジトリで確認することは可能ですが、SVN の元データを調べる必要が生じた場合に備えてSVN リポジトリのバックアップをとっておくことは良い習慣です。SVN リポジトリのバックアップを行なう簡単な方法は、SVN の中央リポジトリをホストするマシーン上で次のようなコマンドを実行することです。SVN リポジトリが Linux マシーンにホストされている場合は、次のコマンドを使用します:

svnadmin dump  | gzip -9 > 

ここで、 はバックアップ対象の SVN リポジトリ ファイルのパスに置き換え、 はバックアップされた圧縮ファイルのパスに置き換えてください。

SVN リポジトリのリードオンリーへの切り替え

この段階で、すべての開発者は Git にコミットを行うことになります。その規則に強制力を持たせるために、SVN リポジトリを読み取り専用に切り替えます。この操作はサーバーの設定に依存しますが、svnserve デーモンを利用している場合は、SVN リポジトリの conf/svnserve.conf ファイルを編集することによって行います。このファイルの [general] セクションに次の 2 行を記述します

anon-access = read auth-access = read

これにより、匿名ユーザーに対しても認証済みユーザーに対してもアクセス許可を読み取り専用にすることを svnserve に指示します。

概要

これでプロジェクトを Git に移行する処理はすべて完了しました。お客様のチームは Git ワークフローを用いて開発を進め、分散開発の利点を最大限に生かすことができます。成功を祈ります!

Git を学習する準備はできていますか?

この対話式チュートリアルを利用しましょう。

今すぐ始める