LoginSignup
58
72

More than 5 years have passed since last update.

Git-svnでSubversionからGitに移行しよう。

Last updated at Posted at 2016-06-10

はじめに

Subversionのリポジトリからcommitログを引き継いだ形でGitへ移行した際の手順です。
また本番環境でのgitへの切替も含んでます。

ブログ に転記済みです。
よろしければ↑をどうぞ。

注意点

一度、自分の手元のPCで作業用のディレクトリを作成して作業することをおすすめします。
間違ってもいきなり本番環境などでは作業しないように…。

SVNからGitへの移行作業

標準的なリポジトリ構造なら下記コマンドの実行でスムーズに行きます。

一連の作業はgit svn コマンドで作業していきます。

git svn clone -s --prefix=svn/ svn+ssh://svnserve@hogehoge.com/hoge

標準的な構成
trunk
branches/hoge
branches/hugahuga2
tags

リポジトリが変則的な場合

Subversionのリポジトリ構成が変則的な場合、git svn clone(内部で行っている事)を手動で行うことで対応出来る。

  • git svn init で初期化
  • .git/config を編集し、リポジトリ構成を明示しておく
  • git svn fetch で取得
git svn init -s --prefix=svn/ svn+ssh://svnserve@hogehoge.com/hoge

/* .git/configを編集 */
vim .git/config

------------------------------------------------------
[svn-remote "svn"]
        url = svn+ssh://svnserve@hogehoge.com/hoge
        fetch = trunk:refs/remotes/svn/trunk
        fetch = dev:refs/remotes/svn/dev  //追記部分
        branches = branches/*:refs/remotes/svn/*
        tags = tags/*:refs/remotes/svn/tags/*
------------------------------------------------------

git svn fetch

ブランチの確認

git branch -a

  remotes/svn/dev
  remotes/svn/trunk

ブランチを作る

git checkout -b svn/trunk
git checkout -b develop svn/dev

除外ファイル

git svn show-ignore >> .gitignore

予め用意しておいた空のリモートリポジトリを追加&push

git remote add origin ssh://git@hogehoge.com/hoge

git push -u origin --all

既存のディレクトリへの反映

さて、無事VCSをGitに移行出来たら、開発環境や本番環境もGitに変更しましょう。

git init
git remote add origin ssh://git@hogehoge.com/hoge
git checkout -b svn-to-git
git fetch origin
git checkout origin/master -- .gitignore //監視除外の為リモートから取得する。
git reset --hard origin/master

リモートをブランチをローカルに作成

git checkout -b master origin/master
git checkout -b develop origin/develop

仮に作ったブランチを削除

git branch -d svn-to-git
SVN使わないから削除
rm -rf .svn
SVNのバージョンが古い場合各ディレクトリに.svnが存在するので下記で対応
find . -name .svn | xargs rm -rf

参考情報

58
72
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
58
72