リモート上で動いてるWordPressテーマの修正の同期をさくっとやりたい(gitで)

ブログをさくらVPS上に移転、そしてこのサブブログの新設する際、ネットで見つけたCreative CommonなWordpressテーマを多くの微調整を加えた上で採用しました。

微調整はgitで管理します。

最初はローカルマシンにWordpressを導入してその上で修正作業を行い、完成したものを(.gitごと)丸めてscpしリモートへ送りました。

たぶんまだテーマの微調整は生じると思います。
sshでvimで変更してっても悪くはないんですが、稼動状態にあるものをその場でいじっていくってのは非常によろしくない。

なので、微調整の作業は、リモートから落とす→修正→リモートへ反映 というサイクルを繰り返すことになります。
これを手作業でするのが気持ち悪いので、gitのDVCSとしての機能を生かして、さくっと同期できたらいいなぁ、という話。

一言でまとめると、こういうこと。

ああそうか、サーバのwp-content/themes/hogehoge でリモートリポジトリを--bareせずに作っちゃえばテーマの微調整とかしたときの同期が楽にできるのでわ
@mrxptn
すずき

実際の作業は以下のとおりだけど、git remoteでぐぐったらいくらでもでる話なので、詳細は他を参照願います。
hogehogeって名前のテーマがあるとして、
(リモートでのwordpressのルートディレクトリ)/wp-content/themes/hogehoge/
の中に.gitがちゃんとあるとして、

(ローカルでのwordpressのルートディレクトリ)/wp-contents下にディレクトリhogehogeをつくって、

% git init
% git remote add origin master (user)@(remote-host):(リモートでのwordpressのルートディレクトリ)/wp-content/themes/hogehoge/

ここまでが準備。

あとはテーマの修正がしたくなる度に、次のようなのを繰り返すだけ。

% git pull origin master

まずこれでmasterのHEADがローカルにcheckoutされます。

あとはそれをごにょごにょいじって、ちゃんと(ローカルのブラウザ上で)確認して、コミットしましょう。

終わったら、リモートリポジトリのmasterへpushし、それだけだとファイル実体は変わらないので、sshで入ってcheckoutします。

% git push origin master
% git checkout master -f
  • fしないと期待通りチェックアウトされません。

もしローカルマシンが1台だけなら、そこが常に最新なので、最初のpullは別にしないでいいです。
tarで固めて落として変更してupして、よりはずっと素敵です。(最初言ったようにリモート上でいじるのはやりたくない)
何より、こういうことできるDVCS素敵です。

2 thoughts on “リモート上で動いてるWordPressテーマの修正の同期をさくっとやりたい(gitで)

  1. リモートはやっぱり bare にしておくのがいいと思う。
    で、hook で更新をひっかけてリモート側の別リポジトリに checkout させるような感じにすれば、push するだけですべてが終わる、みたいな。
    つまりリモートに一番の大元としての (bare な) リポジトリを作って、それを origin に持つ (非 bare な) なリポジトリをもう一個リモートに持つ。
    もっかい言い換えると、後者のリポジトリが wp-content/themes/hogehoge で、それとは別に bare なリポジトリを用意してローカルからは直接 wp-content/themes/hogehoge のリポジトリを更新するんじゃなくて、bare なリポジトリのほうを更新する、と。
    hook はまぁシェルスクリプトで十分じゃないかな。
    cd wp-content/themes/hogehogeのリポジトリのパス
    git clean -dfx
    git pull origin master
    とかそんな感じ。

  2. ご指摘・アドバイスありがとうございます。
    こういう時にフックを活用できるのですね…!

    リモートリポジトリは、bareの件もだし、あとできれば(リモートホストのシステム内で)あちこちバラして置きたくないとは思っていましたので、アドバイスいただいた方法ならそのあたりもスマートにできますね。

belltail へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です