Help us understand the problem. What is going on with this article?

SVNからgitへの移行

More than 5 years have passed since last update.

SVNからgitへの移行

社内プロジェクトをSVNからGitLab上で管理されているgitリポジトリに移行してみましたのでその手順をまとめてみます。

まずSVNのワーキングディレクトリで下記を実行します。

$ svn log --xml | grep "<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt

最近のMacではgrep -Pオプションがなくなったらしいので、Gitへの移行の手順から若干アレンジしています。そうしたらusers.txtにSVNにコミットしたユーザの一覧ができるので、名前とメールアドレスを設定していきます。

Subversionのユーザ名 = Gitのユーザ名 <メールアドレス> 

こんな感じです。GitLabで管理したかったので、自分の知ってる人であるような気がするユーザ名はGitLab上の名前とメールアドレスを一致させました。

次に、ワーキングディレクトリの外に別のディレクトリを作ります。この作業ではSVNから取り直すみたいなのでもうワーキングディレクトリは用済みです。

$ git svn clone --no-metadata -A users.txt -t tags -b branches -T trunk http://hogehoge.jp/svn

こんな感じみたいです。で、ここでエラーがいろいろでます。

Author: ***** not defined in users.txt file の対処法

なぜか知らないけどusers.txtに入っていないみたいです。users.txtに手作業で指摘されたユーザを追加してコマンド再実行でうまくいきました。

Found possible branch point の対処法

gitリポジトリの中の.git/configから

branches = branches/*:refs/remotes/svn/branches/*
tags = tags/*:refs/remotes/svn/tags/*

みたいなのを消して再実行するとうまくいきました(参考)。

あとはブランチとタグをもってくるんですが、Git - Git への移行の通りで特に難なくできたのでこっちを見て下さい。

また、こうするとファイルのタイムスタンプが作業した時刻になってしまうため、 SVNからGitに移行した後にやること - Qiita [キータ] に書いてある方法でコミットしたタイムスタンプに変更できます。

参考文献

m3dev
インターネット、最新IT技術を活用し日本・世界の医療を改善することを目指します
https://m3.recruitment.jp/engineer/
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