[WordPress] git 管理しているテーマで git のコミットIDをバージョン番号として使用するサンプル

<?php
$version = 'default';
$stylesheet_dir = get_stylesheet_directory();
if ( file_exists( $stylesheet_dir.'/.git/HEAD' ) ) {
$head = explode(' ', trim(file_get_contents($stylesheet_dir.'/.git/HEAD')) );
if ( isset($head[1]) && file_exists($stylesheet_dir.'/.git/'.$head[1]) ) {
$version = trim(file_get_contents($stylesheet_dir.'/.git/'.$head[1]));
}
}
define( 'THEME_VERSION', $version );

view raw
gistfile1.php
hosted with ❤ by GitHub

.php に特定の文字列が入っていた場合に git commit を失敗させる pre-commit hook のサンプル

#!/bin/sh
if git rev-parse –verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
#for FILE in `git diff-index –name-status $against — | grep -E '\.js(\.coffee)?$'| cut -c3-` ; do
# # Check if the file contains 'console.log'
# grep_result=`grep 'console.log' $FILE | grep -v -E '\s*(\#+|\/\/).*console.log' | grep -v '^$' `
# if [ -n "${grep_result}" ]
# then
# echo $FILE ' contains console.log!'
# echo $grep_result
# exit 1
# fi
#done
for FILE in `git diff-index –name-status $against| grep '\.php$'| cut -c3-` ; do
# Check if the file contains 'debugger'
grep_result=`grep '鼻くそ' $FILE | grep -v -E '\s*\#+.*鼻くそ' | grep -v '^$'`
if [ -n "${grep_result}" ]
then
echo $FILE ' contains 鼻くそ!'
echo $grep_result
exit 1
fi
done

インストール方法

$ cd /path/to/git_repo/.git/hooks
$ wget https://gist.githubusercontent.com/wokamoto/d9fa955004231c63a175/raw/71c011ec700a8d36d4e362fb09739b3333b2f434/pre-commit.keyword-check.sample
$ mv pre-commit.keyword-check.sample pre-commit
$ chmod +x pre-commit

これで、php ファイルに ‘鼻くそ’ という文字列が入っている場合に git commit を失敗させることができます。

どうしても、鼻くそが入ったまま commit したい場合は

$ git commit --no-verify

共有サーバで git を使う

coreserver は、これでできたよ

$ tar xvfz git-1.8.0.1.tar.gz
$ cd git-1.8.0.1
$ ./configure --prefix=$HOME/local
$ gmake
$ gmake install

~/local/bin にインストールされるので .bash_profile に export PATH=$HOME/local/bin:$PATH を追加してパスを通しておくのを忘れずに

最新版の tar ボールはここから取ってきて、coreserver に送ってね
Downloads – git-core – Git – the stupid content tracker – Google Project Hosting

[WordPress ] サイトのソース管理を git で行う(簡略版)

.gitignore として、WordPress のルートに以下を作成

wp-content/uploads/
wp-content/upgrade/

GitHub に置いてある WordPress 用の .gitignore を流用しても可
https://github.com/github/gitignore/blob/master/Wordpress.gitignore
# こっちは、コアソースをすべて対象外にしてくれる ( @miya0001 thx )

git リポジトリの作成とファーストコミット

$ cd /path/to/wordpress
$ git init
$ git add .gitignore 
$ touch wp-content/uploads/.gitignore; git add -f wp-content/uploads/.gitignore 
$ touch wp-content/upgrade/.gitignore; git add -f wp-content/upgrade/.gitignore 
$ git add *
$ git commit -m "first commit"

複数マシンからアクセスしやすいように bare リポジトリを作成

$ git clone --bare /path/to/wordpress /path/to/git/wordpress.git

クライアントで、サーバ example.com から git リポジトリを取得

$ git clone ssh://example.com/path/to/git/wordpress.git wordpress

# example.com には ssh 接続できるようにしておくこと

クライアントで、修正したファイルをサーバの bare リポジトリに push

$ git add *
$ git commit -m "modified hogehoge"
$ git push

サーバで、bare リポジトリから pull

$ cd /path/to/wordpress
$ git pull /path/to/git/wordpress.git