Git をメインのバージョン管理に使うなら、git-svn
は使う必要がないと言う記事。
Git や GitHub で管理する WordPress プラグインを公式の SVN リポジトリに送る方法として git-svn
を使うワークフローが多く紹介されている。
- 2014年01月06日 WordPress のプラグインを公式リポジトリと GitHub に公開する
- 2013年09月26日 GitHubにホストしていたレポジトリをWordPress.orgのSVNにSourceTree(Mac)を使ってプッシュするまで
- 2012年09月19日 Using Git (and GitHub) with Subversion Mirroring for WordPress Plugin Development
- 2011年05月23日 Revisiting Git, Github, and the wordpress.org plugin repository
これらの問題点は以下の通り。
- SVN リポジトリから git に取り込む(
git svn fetch
)際、一本の巨大なリポジトリ・ツリーを頭から検索するため、非常に時間がかかる。 - SVN へのコミットはすべての変更を集約する必要がある。これには git 側でのマージ処理が必要だが、途中の過程をすっ飛ばして前バージョンと最新をマージするため、コンフリクトが発生する可能性が高い。この解消は全くもって無駄な作業である。
git-svn
の制限により、サブモジュールが扱えない。- 開発の歴史をすべて SVN リポジトリへ引き継ぐため、リポジトリが増大する。
蛇足だが、上記最後の記事には 「公式リポジトリを単にリリース用に使うだけなら、せめて git rebase -i
か git merge -squash
でやってくれ」 という Otto さんの嘆き が書き込まれている(Otto さん は WordPress のプラグイン開発で有名な人)。
一方、Git / GitHub を主とする開発では、
- 開発の歴史はすべて Git / GitHub で管理する。
- 公式 SVN リポジトリは、単にリリース・バージョンの保持のために利用する。
SVN クライアントとして動作する git-svn
を使うと、git リポジトリと同時に SVN のリポジトリも同時に生成・管理することになるが、上記を前提とすれば、git-svn
を使う必要がない。
基本的には、公式サイトの記事 How to Use Subversion に書かれている手作業をスクリプトで自動化するイメージ。
現在見つけたスクリプトは以下の2系統。どちらもリリース・バージョンを GitHub に push する直前からの利用を想定している。バージョン番号に応じたタグ付けなど、ワン・コマンドによる自動化が可能。一時的に SVN リポジトリを作成するが、残す必要がないので、その都度削除するという潔さ。スクリプトの動作も軽い。
sudar / wp-plugin-in-github
歴史を含めて既存の SVN リポジトリから git にクローンを作成する clone-from-svn-to-git.sh
と git で管理しているファイル群を SVN に上げる deploy-plugin.sh
がメイン。前者は git-svn
のインストールが必要だが、最初から GitHub で開発している場合には後者だけを使えば良く、git-svn
のインストールは不要。
assets
への転送、add-textdomain.php
や makepot.php
による言語ファイルの更新(Otto さんの記事 Language Packs 101 – Prepwork を参照)も含まれており、至れり尽くせりのスクリプト。
また、マークダウンで書かれた README.md を readme.txt に変換する readme-converter.sh
や、プラグインの zip アーカイブを作成する create-archive.sh
もあり、すべての作業内容が網羅されている。
詳しくは、以下の紹介記事を参照のこと。
- 2014年01月03日 公式リポジトリのWordPressプラグインをGitHubでバージョン管理できる『wp-plugin-in-github』使ってみたよ
- 2013年12月23日 WordPress公式プラグインリポジトリに登録しているプラグインをGitHubで管理する
GaryJones / wordpress-plugin-git-flow-svn-deploy
deanc / wordpress-plugin-git-svn から派生したスクリプトで、サブモジュールや assets
の転送、途中で削除されたファイルなどの対応もサポート。
私はこのスクリプトを元に自分の構成に合わせて修正、利用した。
いずれにしても盲目的に実行するのではなく、自分の環境に合っているかどうか、スクリプトの各行を吟味して実行するが吉。さもないとトラブルの際、うろたえることになる。
またまた蛇足だが、Create Git Repositories for Plugins and Themes には公式リポジトリの GitHub 化が提案されている。WP.org のアカウントとリポジトリのアカウントを同一にしているのをどうするかが一番の問題点と見た。