LoginSignup
2
3

More than 5 years have passed since last update.

SubversionからGitへ移行 - 移行作業編

Posted at

Subversion から Git への移行作業

概要

SubversionからGitへ移行するための環境構築を完了させていることを前提とします。

移行作業はSVN から Git への移行 | アトラシアンの通り、 Prepare, Convert, Synchronize, Share, Migrate と手順に沿って行います。

ハマり所

  • svn から Git へのソースコード同期は誰かのローカルPC1台でしかできない
    他のローカルからプッシュすると、 Git リポジトリが壊れる
  • git svn clone の際に、以下が空ファイルだと途中で処理落ちする
    --authors-file=authors.txt の中身は記載必須となる
  • branches, tags を独自ルールにしている場合はキチンと相関する必要がある

Tips

  • author 一覧取得
    $ svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt
  • svn:ignore 一覧取得
    $ svn propget -R svn:ignore

svn から Git への移行期間中にやること

移行期間中は、 svn と同期する為に( svn にコミットがあれば)定期的に下記実行する必要があります。

$ git svn fetch
$ java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase
$ git push -u origin --all

※svn コミットのデータを取得して、 Git リポジトリに同期しています。

svn と Git の同時稼働方法

下記のように、移行元 svn に存在しないブランチに対しては、 Git からもプッシュできます。
それを利用して、 svn と Git の両方を稼働させることもできます。

  1. svn で管理している環境を、上記手順で Git 対応する
    master ブランチにデータができる
  2. .svn ディレクトリはそのまま置いておく
  3. Git で別のブランチを作成
    このブランチ内ではコミットとかプッシュしても問題ない
  4. svn の修正は上記手順で master ブランチに取り込む
  5. master ブランチから 3 のブランチへマージ

ただし、 svn から Git の同期はローカルPC1台でしか対応できないので、早く Git 乗り換えることをお勧めします。

備考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3