web-dev-qa-db-ja.com

Subversionを使ってWordPressをデプロイする

私は自分のウェブサイトでSubversionを使っています。今までのところ、これは私のサイトそれぞれに新しいリポジトリを作成することを意味していました。しかし、これは、私が各サイトのWordPressソース全体に手を伸ばしていることを意味するため、まったく非効率的です。それはまた私がリポジトリ間でプラグインをコピーしなければならないことを意味していて、毎回コードを複製します。

だから私がやりたかったのは、私のテーマファイル(そしておそらくサイト固有のプラグインのような他のサイト固有のディレクトリ)だけを実際に含んでいるレポを持つことでした。これは私が構築しようとしているWordPressバージョンのタグ付きWordPressレポジトリへのリンクと他の共有プラグインレポジトリへのリンクを持っているので、テスト用にリリースまたはデプロイするためにはsvn checkout svn://path/to/site/repoとそれを実行するだけです。 WordPressレポ全体、私のすべてのプラグイン、そしてサイト固有のものもすべてダウンロードするでしょう。

これを行う方法はありますか?それとも悪い考えですか?これを行うためのもっと簡単な方法がありますか?他の人はどうやってそれをするのですか?

2
Thomas Clayson

さて、このタスクを解決するためにSubversionを使うことを妨げるものは何もありません。

注意:テーマ/プラグインのためのあなた自身のリポジトリのレイアウトによっていくつかのステップが異なるかもしれません(私はそれらがトランクの内側のディレクトリであり、ツリー全体がそうではない)標準のWPレイアウトを繰り返すことはできません:/wp-content/themes/wp-content/plugins/

始めるためにあなたは持っている必要があります:

  • コミットできる空のSubversionリポジトリ。
  • Svnに関する基本的な知識:外部
  • "ディストリビューション"にまとめたいすべてのコンポーネント(WPコアを含む)のURL

共通の規則

すべてのコンポーネントは独自のリポジトリで提供され、私たちのリポジトリは単一の場所でそれらを一緒にリンクするだけです

行動:

  • チェックアウト(空の)トランクsvn co URL/trunk Deploy
  • すべてのコンポーネント定義をテキストファイル(サンプルのexternals.txt)に書き込みます(任意の場所に保存します。repoの一部にはしないでください)。それらはファイルのようになります。

wordpress http://core.svn.wordpress.org/tags/3.5/

wordpress/wp-content/plugins/plugin-one URL-OF-PLUGINONE

...

wordpress/wp-content/themes/Mytheme URL-OF-MYTHEME

(各行は新しい外部定義、1番目の部分 - ローカルディレクトリへの相対パス、2番目の部分のスペース - ディレクトリの内容のソース)

  • cd Deploy
  • トランクのルートにあるすべての外部を一度に定義するには、externals.txtを使用します。svn propset svn:externals . -F ../externals.txt
  • 変更をコミット
  • アップデートして(またはトランクを新しいディレクトリにチェックアウトして)、すべて表示します。コア、必要なモジュール、およびテーマをwordpress dir内に収集

次回、デプロイ可能なWPの設定を変更したい場合は、既存のsvn:externals定義( 'svn propedit'、 'svn commit')のみを編集し、更新後の設定を取得します。

1
Lazy Badger

SVNからWPをプルダウンしたマルチサイト設定が1つあります。すべてのサイトを更新するには、svn sw ...コマンドを使用してwp-adminのアップグレードページにアクセスします。

すべてのサイトが同じサーバー上にある場合は、マルチサイトを検討することをお勧めします。

0
Dunhamzzz

NetBeansを使用する... SVNからコピーをチェックアウトするときは、それをプロジェクトのソースファイルとして直接使用し、同時にサーバーと同期させることができます。 NetBeansは新しいファイル、変更されたファイルをきちんと追跡します。リビジョンの比較、コミット、更新などができます。コマンドプロンプトで必要なコマンドプロンプトは不要です(コマンドライン/端末から行うチェックアウト/エクスポート/インポートを除く)。

0