概要
日本製 OSS のテキストエディタである サクラエディタ はずいぶんと前から SourceForge.net 上で Subversion 管理されている。
ずいぶんと長い間サービスを継続していただいている SourceForge には感謝の念は尽きない。が、今の時流としては SourceForge による Subversion 管理を続けるよりも、機会があれば GitHub 側に移行したほうが機能追加や修正等のプルリクエストを受け付けやすくなり、品質の向上に繋がるのでは、というのが自分の所感。
今回はコミュニティに対しては事後承認的な形で、サクラエディタ V2(UNICODE) 部分のリポジトリを GitHub に移行してみる。
コミュニティの承認が得られれば今回の GitHub 移行を正式なものとみなし、更なる整備を進めたい。
移行結果(コミュニティの承認待ち)
今回の移行によって期待される効果
移行前: SourceForge (Svn)
- 🤢 ブランチ運用がしにくいので、trunk への直コミットがほとんど。
- 🤢 コミッタ以外の人がコードを修正したい場合には patch を作成して受け渡すオールド形式。
- 🤢 サーバがときどき重い。
移行ポリシー
コミットログの全移行
移行対象の Subversion リポジトリのコミットログ情報はそのまま Git のコミットログとして移行することにする。
移行手順
移行元 Subvesion リポジトリの確認
Subversion 側の構成を確認し、どのようなリポジトリを作成する必要があるかどうか確かめる。
基本的には https://svn.code.sf.net/p/sakura-editor/code/ の直下にあるフォルダをそれぞれ1つのリポジトリとして移行することになる。
サクラエディタのリポジトリ構成はやや特殊で、「trunk」とは別に「trunk2」という名前の trunk が存在する。
これは歴史的な経緯によるもので、
「trunk」を本来の ANSI 版として運用し、
「trunk2」を新しい UNICODE 版として運用している、という事情がある。
このあたりの特徴に気を付けつつ GitHub 移行を進める。
(「trunk」「trunk2」の両者があるものについては今回は「trunk2」を移行対象とする)
GitHub Organization の作成
sakura-editor という GitHub Organization を作成した。Organization は public リポジトリのみ扱う用途であれば無料で作成できる。
github.com
GitHub Repositories の作成
移行元 Subversion リポジトリの情報に従い、「sakura」「bregexp」「help」「installer」「macro」「plugin」の6個のリポジトリを作成した。
移行
git-svn 機構 により Subversion から Git への移行を行う。
$ mkdir sakura-editor $ cd sakura-editor $ git svn clone https://svn.code.sf.net/p/sakura-editor/code/ \ --trunk=sakura/trunk --branches=sakura/branches/* --branches=sakura/trunk2* \ --tags=sakura/tags/* sakura $ cd sakura $ git reset --hard origin/trunk2 $ git remote add github git@github.com:sakura-editor/sakura.git $ git push github master $ cd .. $ git svn clone -s https://svn.code.sf.net/p/sakura-editor/code/Bregexp/ bregexp $ cd bregexp $ git remote add github git@github.com:sakura-editor/bregexp.git $ git push github master $ cd .. $ git svn clone --trunk=trunk --branches=trunk2* --tags=tags/* https://svn.code.sf.net/p/sakura-editor/code/help/ help $ cd help $ git reset --hard origin/trunk2 $ git remote add github git@github.com:sakura-editor/help.git $ git push github master $ cd .. $ git svn clone --trunk=trunk2 https://svn.code.sf.net/p/sakura-editor/code/installer/ installer $ cd installer $ git remote add github git@github.com:sakura-editor/installer.git $ git push github master $ cd .. $ git svn clone --trunk=trunk2 https://svn.code.sf.net/p/sakura-editor/code/macro/ macro $ cd macro $ git remote add github git@github.com:sakura-editor/macro.git $ git push github master $ cd .. $ git svn clone --trunk=trunk2 https://svn.code.sf.net/p/sakura-editor/code/plugin/ plugin $ cd plugin $ git remote add github git@github.com:sakura-editor/plugin.git $ git push github master $ cd ..