Git
svn
git-svn

SubversionリポジトリをGitで扱うためにしたこと

More than 1 year has passed since last update.

ググった記事を色々参考にしたがうまくいかなかったので、成功した手順を書いておく。
まだ良くわかっていない部分もある。

前提

  • そこそこでかいリポジトリである
  • branchやtagもある
  • OSはWindows

手順

ディレクトリの作成

$ mkdir C:¥workspace¥hoge
$ cd C:¥workspace¥hoge

git svn init

$ git svn init  http://subversion.example.com/svn/myrepo -T trunk/hoge --prefix svn/

.git/configを編集する。

  • [core]は元ファイルを優先すること
  • [gc]部分の記述が重要だった
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true

# ここから下について変更する。
[svn-remote "svn"]
    noMetadata = 1
    url = http://subversion.example.com/svn/myrepo
    fetch = trunk/hoge:refs/heads/master
    # branchの自動更新が不要なら以下2行は省略可
    branches = branches/*:refs/heads/*
    tags = tags/*:refs/tags/*

# ここの変更が重要だった
[gc]
    auto = 0

git svn fetchをする

  • 結構時間がかかるが途中で失敗することは無かった
  • 完了後にgit gcする
  • 最後に.git/configから[gc]の設定を取り除く
$ git svn fetch --fetch-all
$ git gc