概要
すべてのファイルは、私たちのサーバー上の svnrepository に中央集約的に保存されます。そのリポジトリから、誰でもあなたのプラグインファイルのコピーをローカルマシンに チェックアウト できますが、プラグインの著者として、あなたにのみ チェックイン の権限があります。つまり、あなたはファイルを変更したり、新しいファイルを追加したり、ローカルマシン上のファイルを削除して、その変更を中央サーバーにアップロードすることができます。このチェックインのプロセスが、リポジトリ内のファイルと WordPress.org プラグインディレクトリに表示される情報の両方を更新します。
Subversion は、これらのすべての変更を追跡しているため、必要に応じて古いバージョンや リビジョン を後で確認できます。各個別のリビジョンを記憶するだけでなく、特定のリビジョンを簡単に参照できるようにするために、Subversion に タグ を付けるよう指示することもできます。タグは、プラグインの異なるリリースにラベルを付ける のに最適であり、WordPress.org で正しいバージョンが表示され、ユーザーに更新されることを保証する唯一の完全にサポートされた方法です。
アカウント
SVN のアカウントは、プラグインを提出したときに使用したアカウントの同じユーザー名(メールアドレスではありません)になります。これは、WordPress フォーラムで使用するユーザー名でもあります。
WordPress.org では、アカウント用に SVN 専用のパスワードを設定することができます。これは、アカウント設定 で行うことができます。なぜそれを使用するのか、どのように使用するのかについての詳細は、このメタガイド を参照してください。
覚えておいてください、大文字と小文字は重要です — あなたのユーザー名が JaneDoe であれば、大文字の J と D を使用しなければなりません。さもなければ、SVN は失敗します。あなたの名前の特定の大文字と小文字は、アカウント設定で確認できます: https://profiles.wordpress.org/me/profile/edit/group/3/?screen=svn-password
SVN フォルダー
すべての SVN リポジトリには、デフォルトで 3 つのディレクトリが作成されます。
/assets/
/tags/
/trunk/
- スクリーンショット、プラグインヘッダー、プラグインアイコンには
assets
を使用します。 - 開発作業は
trunk
に属します。 - リリースは
tags
に入ります。
トランク
あなたの メイン プラグインファイルをトランクのサブフォルダーに置かないでください。例えば /trunk/my-plugin/my-plugin.php
のようにすると、ダウンロードが失敗します。含まれるファイルにはサブフォルダーを使用できます。
/trunk
ディレクトリは、あなたのプラグインコードが存在する場所です。トランクは最新かつ最高のコードと見なされるかもしれませんが、必ずしも最新の 安定した コードではありません。トランクは開発バージョンのためのものです。理想的には、トランク内のコードは常に動作するコードであるべきですが、必ずしも「安定した」バージョンではないため、時折バグがあるかもしれません。シンプルなプラグインの場合、トランクは存在するコードの唯一のバージョンであることもあり、それも問題ありません。
たとえ他の場所(例えば git リポジトリ)で開発作業を行っていても、SVN の比較を容易にするために、トランクフォルダーを最新のコードで更新しておくことをお勧めします。
タグ
/tags
ディレクトリは、プラグインのバージョンを置く場所です。ここでのサブディレクトリには、プラグインのバージョン管理と同じバージョン番号を使用します。ユーザーが正しいコードを取得できるように、常にタグフォルダーと適切なバージョン管理を使用することが重要です。
プラグインのバージョン 1.0 は /tags/1.0
に、バージョン 1.1 は /tags/1.1
に、そしてその後も続きます。
私たちは 強く セマンティックソフトウェアバージョニング の使用を推奨します。
アセット
参照: プラグインアセットの動作
アセットは、スクリーンショット、ヘッダー画像、プラグインアイコンが存在する場所です。ディレクトリ内の古いプラグインには、代わりに /trunk にスクリーンショットファイルがある場合がありますが、これは推奨されません。すべての新しいプラグインは、/assets にスクリーンショットを置くべきです。これにより、プラグインのファイルサイズが小さく保たれ、プラグイン自体と一緒にスクリーンショットを WordPress インストールに送信する必要がなくなります。
ブランチ
- /branches/ ディレクトリはもはやデフォルトで作成されません。なぜなら、ほとんど使用されなかったからです。このセクションは非推奨と見なされ、情報提供の目的のみで利用可能です。*
/branches
ディレクトリは、プラグインのブランチを保存するために使用できる場所です。開発中のバージョンやテストコードなどが含まれるかもしれません。
WordPress.org システムは、ブランチディレクトリを何のためにも使用しません。これは、開発者が必要に応じて使用するためのものと見なされています。デフォルトで作成されなくなったため、もはや必要ないので無視しても構いません。
ベストプラクティス
他の開発者にとってコードを最もアクセスしやすくするために、以下のプラクティスが最適と見なされます。
開発に SVN を使用しない
これはしばしば混乱を招きます。GitHub とは異なり、SVN は リリース システムであり、開発システムではありません。小さな変更をすべてコミットしてプッシュする必要はなく、実際にそうすることはシステムにとって有害です。SVN にコードをプッシュするたびに、SVN 内のすべてのバージョンの すべての zip ファイルが再構築されます。これが、時々プラグインの更新が最大 6 時間表示されない理由です。代わりに、準備が整ったときに一度だけプッシュするべきです。
コード用にトランクフォルダーを使用する
多くの人が trunk
をプレースホルダーとして使用します。トランク内の readme.txt
ファイルを単に更新し、すべてをタグフォルダーに入れることは可能ですが、そうするとコードの変更を比較するのが難しくなります。代わりに、トランクには最新のコードのバージョンを含めるべきです。たとえそのバージョンがベータ版であってもです。
リリースには常にタグを付ける
トランクをプラグインの安定したタグとして使用することは可能ですが、この機能は実際にはサポートされておらず、推奨されていません。代わりに、リリースは適切にタグ付けされ、反復されるべきです。これにより、すべての自動アップデーターとの完全な互換性が保証され、コードに問題が発生した場合のロールバックが可能になります。
トランクからタグを作成する
コードをタグフォルダーに直接プッシュするのではなく、トランク内のコードを編集し、readme に安定したバージョンを含めてから、トランクから新しいタグにコードをコピーするべきです。
これにより、変更を確認しやすくなり、SVN は変更されたコードのみを更新するため、より小さなコミットを行うことができます。これにより、時間を節約し、潜在的なエラー(間違った安定タグに更新して不正なコードをユーザーにプッシュするなど)を減らすことができます。
タグフォルダーが短期間存在しないことを心配しないでください。svn cp
を使用してトランクをタグにコピーし、同時に SVN にプッシュすることができます。
ローカルで操作している場合は、トランクを更新し、すべてを一度にタグから作成できます。リポジトリのルートをチェックアウトし、/trunk 内のファイルを更新し、svn copy /trunk /tags/1.2.3
(またはバージョン番号が何であれ)を指定し、次にすべてを一度にコミットします。SVN は差分に基づくシステムであり、コピー操作に svn を使用する限り、履歴を保持し、他の人が簡単に追跡できるようにします。
例
新しいプラグインの開始
プラグインを開始するには、すでに持っているファイルを新しい SVN リポジトリに追加する必要があります。
まず、SVN リポジトリのコピーを保存するためのローカルディレクトリを作成します:
$ mkdir my-local-dir
次に、事前に構築されたリポジトリをチェックアウトします。
$ svn co https://plugins.svn.wordpress.org/your-plugin-name my-local-dir
> A my-local-dir/trunk
> A my-local-dir/branches
> A my-local-dir/tags
> Checked out revision 11325.
この例では、Subversion は中央 SVN リポジトリからすべてのディレクトリをローカルコピーに追加しました(「A」は「追加」を意味します)。
コードを追加するには、my-local-dir
フォルダーに移動します: $ cd my-local-dir
今、コマンドラインを介してコピー/ペーストコマンドを使用するか、ドラッグアンドドロップを使用して、リポジトリのローカルコピーの trunk/
ディレクトリにファイルを追加できます。あなたが快適に感じる方法で。
あなたの メイン プラグインファイルをトランクのサブフォルダーに置かないでください。例えば /trunk/my-plugin/my-plugin.php
のようにすると、ダウンロードが失敗します。含まれるファイルにはサブフォルダーを使用できます。
ファイルがトランクフォルダーに入ったら、Subversion に新しいファイルを中央リポジトリに追加したいことを知らせる必要があります。
$ cd my-local-dir
my-local-dir/ $ svn add trunk/*
> A trunk/my-plugin.php
> A trunk/readme.txt
すべてのファイルを追加した後、変更を中央リポジトリにチェックインします。
my-local-dir/ $ svn ci -m 'Adding first version of my plugin'
> Adding trunk/my-plugin.php
> Adding trunk/readme.txt
> Transmitting file data .
> Committed revision 11326.
すべてのチェックインにはコミットメッセージを含める必要があります。
「アクセス禁止」のためにコミットが失敗した場合、かつ コミットアクセスがあることを知っている 場合は、チェックインコマンドにユーザー名とパスワードを追加してください。
my-local-dir/ $ svn ci -m 'Adding first version of my plugin' --username your_username --password your_password
既存ファイルの編集
プラグインがディレクトリにある場合、いつかコードを編集する必要があるでしょう。
まず、リポジトリのローカルコピーに入り、最新の状態であることを確認します。
$ cd my-local-dir/
my-local-dir/ $ svn up
> At revision 11326.
上記の例では、すべてが最新の状態です。中央リポジトリに変更があった場合、それらはダウンロードされ、ローカルコピーにマージされます。
今、あなたは好きなエディタを使って変更が必要なファイルを編集できます。
SVN GUI ツール(SubVersion や Coda など)を使用していない場合でも、変更を加えた後にローカルコピーと中央リポジトリの違いを確認できます。まず、ローカルコピーのステータスを確認します:
my-local-dir/ $ svn stat
> M trunk/my-plugin.php
これにより、ローカルの trunk/my-plugin.php
が中央リポジトリからダウンロードしたコピーと異なることがわかります(「M」は「修正」を意味します)。
そのファイルで何が正確に変更されたのかを確認し、確認して正しいことを確認しましょう。
my-local-dir/ $ svn diff
> * What comes out is essentially the result of a
* standard `diff -u` between your local copy and the
* original copy you downloaded.
すべてが良さそうであれば、その変更を中央リポジトリにチェックインする時間です。
my-local-dir/ $ svn ci -m "fancy new feature: now you can foo *and* bar at the same time"
> Sending trunk/my-plugin.php
> Transmitting file data .
> Committed revision 11327.
新しいバージョンの「タグ付け」
プラグインの正式なリリースを行うたびに、そのリリースのコードのコピーにタグを付けるべきです。これにより、ユーザーは最新の(または古い)バージョンを簡単に取得でき、変更をより簡単に追跡でき、WordPress.org プラグインディレクトリにどのバージョンのプラグインをダウンロードするべきかを知らせることができます。
まず、tags/
ディレクトリ内のサブディレクトリにコードをコピーします。WordPress.org プラグインブラウザのために、新しいサブディレクトリは常にバージョン番号のように見えるべきです。2.0.1.3
は良いです。Cool hotness tag
は 悪い です。
SVN の機能を活用するために、通常の cp
の代わりに svn cp
を使用したいです。
my-local-dir/ $ svn cp trunk tags/2.0
> A tags/2.0
常に変更をチェックインしてください。
my-local-dir/ $ svn ci -m "tagging version 2.0"
> Adding tags/2.0
> Adding tags/2.0/my-plugin.php
> Adding tags/2.0/readme.txt
> Committed revision 11328.
新しいバージョンにタグを付ける際は、trunk/readme.txt
の Stable Tag
フィールドを新しいバージョンに 更新することを忘れないでください。
注意事項
SVN に、プラグインを使用するすべての人に展開することを望んでいるものを置かないでください。これには*ベンダーファイル、.gitignore
、およびその他すべてが含まれます。
また、zip ファイルをアップロードしてはいけません。ほとんどのコードリポジトリシステムと同様に、SVN は個々のファイルをアップロードすることを期待しています。