darudaru

だるだるしてるエンジニア

wordpressをGit管理する方法を考えた結果こうなりました

この「darudaru life」はwordpressで作成していて、そのプログラムはGitで管理しています。
Gitで管理していく中で、色々問題が出てきて四苦八苦しながらリポジトリの構成を変更したのでそれについて書きました。

最初はwordpressのソースをまるっと管理していた

最初はインストールしてきたwordpressのプログラムをまるっとGitにのせていました。
.gitignoreに設定ファイルを追加して、ロリポップのサーバにもリポジトリをcloneできるように設定して、一通り作業を終わらせて満足していたのですが、だんだんと問題がでてきました。

問題1:本番環境、開発環境、Gitのプログラムが一致しない

本番環境はロリポップのサーバ、開発環境はローカル、GitはこのときはGithubを使っていました。
この3つの環境でプログラムが一致していない状態でした。
なにが困るって、この状態だと自動デプロイができない。

自動デプロイをする場合、Gitのプログラムがまるっとサーバに配布されることになります。
そのため、本番環境で動いているプログラムと、Gitのプログラムは一致していることが大前提です。

でも、インストールしたwordpressをそのままGitにのせたたのに、どこで差異が生まれてしまったのか?

差分を見てみると、言語ファイルやプラグインのファイル、他登録しているテーマファイルが多数ありました。
プラグインのインストール等はロリポップ上のwordpressで行うので、そうして増えたファイルがGitに同期されていなかったのです。

原因は分かったが、どうするか。ここで一致させてもまた差分は生まれるだろうし。
かといって、プラグインやテーマを追加するたびにGitと同期させるなんて手間がかかることはしたくない。

問題2:自動デプロイの仕組みにあっていないディレクトリ構成にしていた

Gitではこのようなディレクトリ構成をしていました。

root/
┠.gitignore
└src/darudaru-life

テストコードやドキュメントも同じリポジトリで管理できるように1個サブディレクトリを作っていました。
自動デプロイはbitbucket-syncを使って行ったのですが、bitbucket-syncだとGitのソースがそのままコピペされるため、srcごとサーバに配布されてしまうことが判明。
srcディレクトリが邪魔になってしまったのでした。

必要なものだけ管理するように変更をした

問題1の解決策:改修する必要があるプログラムだけ管理するようにした

わたしがwordpressで改修するプログラムはテーマファイルぐらい。
他のプログラムは改修する必要も予定も無いのだから、管理から外してしまえ、と他のファイルをざくっと削除。
自分が改修するテーマファイルだけ本番環境、開発環境と同期をとりました。

問題2の解決策:本番環境のサーバにあわせたディレクトリ構成に変更した

bitbucket-syncのプログラムをいっそ改修して、とも考えたのですが、そもそもwordpressでテストコードもドキュメントも作らないなと思い直し、ディレクトリ構成を変更しました。
本番環境のサーバのディレクトリ構成にあわせ、bitbucket-syncでデプロイできるように形に変更しました。

まとめ

ということで、今のわたしのwordpressのGitのディレクトリ構成はこんな感じです。

root/
├.gitignore
└darudaru-life/wp-content/themes

バージョン管理のメリットは、自分が改修した変更履歴が確認でき、戻りたいリビジョンに戻れること。
なのであれば、自分が改修しないコードは管理から外して問題なかったんです。これに気づくのにとても時間がかかりました。

その時々によって、適切なプログラム管理をすることが大切だな、と思ったのでした。