git svn -s
で簡単に構築出来ないブランチ構成の場合、git-svn init
で構築した後.git/config
を修正するか、--branches
をgit svn clone
時に明示的に指定する必要があります。その際にbranchesに設定可能な文字列の書き方がちょっと特殊で注意が必要でしたのでメモしておきます。
詳しくは git-svn help
してください。
基本的な設定方法
git-svn -s
などで構築した場合は、以下のようになっていると思います。
branches = xxx/yyy/*:refs/remomtes/*
大事な事は、 :
の左辺と右辺に対して、*
などで動的指定を行う必要がある点です。
*
自体はどこでも構いません。左辺で指定した *
が右辺で指定した *
に設定されると考えると分かりやすいかと思います。
以下例です。
なお、branches
は[svn-remote "svn"]
のurl
に指定されたパスから相対パスで指定を行います。
# fizz/直下のディレクトリがブランチとして認識され、
# svn/ブランチ名という形でgit上にブランチが切られます。
# ex) fizz/project1, fizz/project2
# => svn/project1, svn/project2
branches = fizz/*:refs/remomtes/svn/*
# fizz/直下のディレクトリでその子として`project`ディレクトリを持つディレクトリがブランチとして認識され、
# svn/ブランチ名という形でgit上にブランチが切られます。
# ディレクトリ内には、projectの中身が配置されます。
# ex) fizz/branchA/project, fizz/branchB/project, fizz/branchC/hoge
# => svn/branchA, svn/branchB
branches = fizz/*/project:refs/remomtes/svn/*
# `*`以外でも{}を利用してディレクトリを直接指定することも可能です。
# fizz/直下のディレクトリで`hoge`か`piyo`のフォルダがブランチとして認識され、svn/ブランチという形でgit上にブランチが切られます。
# ex) fizz/hoge, fizz/piyo, fizz/buzz
# => svn/hoge, svn/piyo
branches = fizz/{hoge,piyo}:refs/remomtes/*