コンテンツへスキップ

Git

RudelはPitmasterを通じてPHPネイティブのGit操作を行います。ホストのgitバイナリは不要です。リモートにはHTTP(S)またはSSHで接続します。

各サンドボックスにはrudel/{sandbox-id}という1つのブランチ名があり、以下のすべてのGitワークフローで使われます。

リモートを新しいサンドボックスにクローンする

シェル
wp rudel create --name=feature-x --git=https://example.test/my-theme.git

Rudelはサンドボックスを作成し、サンドボックスディレクトリ内のthemes/my-themeにリモートをクローンします(ディレクトリ名はリポジトリ名です)。既定のブランチからブランチrudel/{id}を作成してチェックアウトします。--type=pluginを指定すると、代わりにチェックアウト先はplugins/my-themeになります。後でプッシュできるよう、リモート、ディレクトリ、ベースブランチがサンドボックスに保存されます。クローンに失敗してもサンドボックスは残り、コマンドに警告が表示されます。

チェックアウトはwp rudel push用の作業コピーです。現行リリースでは、サンドボックスからは配信されません(issue #11)。

  • サンドボックスでは、--themeで選択したテーマ、またはホストの現在のテーマが使われます。サンドボックス作成時にホストからコピーされます。--themeにはホストにインストール済みのテーマを指定する必要があります。そのため、チェックアウトが使われるのはリポジトリ名がそのスラッグと一致し、クローン先がコピー済みのテーマディレクトリである場合に限られます。
  • プラグインは常にホストのプラグインディレクトリから読み込まれるため、--type=pluginのチェックアウトは実行されません。

リンクされたワークツリー

テーマディレクトリがGitリポジトリであるサンドボックスをクローンすると、Rudelはファイルをコピーする代わりに、新しいサンドボックス用のリンクされたワークツリーを作成します。

シェル
wp rudel create --name=feature-y --clone-from=feature-x-3be7

ワークツリーはブランチrudel/{new-id}上にあります。RudelはサンドボックスID、コンテンツタイプ、テーマスラッグに基づく明示的なワークツリー名で、新しいサンドボックスのメタデータに記録します。同じテーマスラッグを使う2つのサンドボックスが衝突することはありません。サンドボックスを破棄すると、ワークツリーが削除され、ブランチも削除されます。

wp rudel cleanup --mergedが対象とするのは、これらのリンクされたワークツリーのみです。クリーンアップを参照してください。

変更をプッシュする

シェル
wp rudel push feature-x-3be7 --message="Update checkout template"

pushはチェックアウト内のすべての変更をコミットし、ブランチrudel/{id}をoriginにプッシュします。変更がない場合はNo changes to push.を返します。

  • 保存済みのリモートがない場合、--git=<remote>がリモートを設定します。最初のプッシュが成功すると、そのリモートが記憶されます。
  • --dir=<dir>はサンドボックスディレクトリからの相対パスでディレクトリを指定します。例: themes/my-theme。デフォルトでは--gitに保存されたディレクトリが使われ、保存先がない場合はサンドボックスディレクトリ全体が対象になります。
  • --messageのデフォルトはUpdate from Rudel sandboxです。

PHPから実行すると、Rudel::push( $id, $remote_url, $message, $subdir )も同じ処理を行い、rudel_*_environment_pushフックを発火させます。

コミットの識別情報

チェックアウトのGit設定にuser.nameもuser.emailもない場合、RudelはRudelとrudel@localhostを書き込みます。別の値を使うには、wp-config.phpでRUDEL_GIT_AUTHOR_NAMEとRUDEL_GIT_AUTHOR_EMAILを定義してください。