Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Organization

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

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 乗り換えることをお勧めします。

備考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?