Subversion_git-svnを用いたリポジトリの変換
背景
現在の職場はバージョン管理ソフトにSubversionを使用している。 gitに移行する動きもあるらしいが、しがらみが多く、進捗は芳しくないとのこと。
状況確認のために、ローカル環境でリポジトリをgitへ変換してみたが、 特殊な使い方がされており、一工夫必要だった。
その手順を記録する。
置かれた状況
「特殊な使い方」を具体的に示す。
1ソフト1リポジトリではない
(Top)¥(Category)¥(SoftwareName)¥〜 という構造になっている。
追記
どうもSubversionでは、一般的な使い方らしい。
ブランチがフォルダ分けされている
branches¥(Category)¥(Year)¥(FeatureName) という構造になっている。
結局やりたいこと
以下の通り。
実際の手順
リポジトリの初期化
リポジトリ用のフォルダ作成後に、以下コマンドを実行。 prefixは任意だが、短い方が見やすいので、「svn」とした。
git svn init --prefix=svn/ (ソフトのURL)
設定ファイルの編集
trunkとbrunchesの情報を追加する。 branches追加の方法は以下の2通り
- ワイルドカードを追加する
- ブランチを複数追加する
編集前
[svn-remote "svn"] url = (ソフトのURL) fetch = trunk:refs/remotes/svn/trunk
編集後(ワイルドカードを使う)
[svn-remote "svn"] url = (TopのURL) fetch = trunk:refs/remotes/svn/git-svn branches = branches/*/*/*:refs/remotes/svn/branches/*
編集後(ブランチを複数追加する)
[svn-remote "svn"] url = (TopのURL) fetch = :refs/remotes/svn/git-svn branches = branches/CategoryA/2023/*:refs/remotes/svn/branches/* branches = branches/CategoryA/2022/*:refs/remotes/svn/branches/* branches = branches/CategoryB/2023/*:refs/remotes/svn/branches/* branches = branches/CategoryB/2022/*:refs/remotes/svn/branches/*
リポジトリ履歴を取得する
以下コマンドを実行
git svn fetch
Ctrl+Cで停止する。 上のコマンドをもう一度実行すると再開できた。
参考文献
git-scm.com 「brunches =」あたりで検索すると、良い例が出る。
以上です。