Gitを叩くGruntプラグインはいくつかあるけど、Grunt管理外のディレクトリにあるGitリポジトリでも気軽に叩けそうなのがなかった。大体GruntのルートとGitのルートが一致していることが想定されている。それでもGruntのルートが下流ならなんとかなるけど、逆の場合はどうにもならない。しょうがないのでファイルを指定してタスクを走らせたら、指定の作業フォルダへ移動してからそのファイルをadd
してcommit
するだけのGruntタスクを書いて使うことにした。
Download: grunt-gitcommit.js
オプションはcwd
とmessage
の2つ。cwd
でコミットしたいGitリポジトリのルートを、message
でコミット・メッセージのプリフィックスを指定できる。
gitcommit: {
options: {
cwd: '../../weblog/',
},
publish: {
options: {
message: 'Publish'
},
src: [grunt.option('file')]
},
rebuild: {
options: {
message: 'Rebuild'
},
src: [grunt.option('file')]
}
}
};
--file
オプションなどでコミットしたいファイルを指定してタスクを実行すれば良い。オプションの名前はタスク設定の書き方に依存するので何でも良い。この設定例でなんとなく想像がつくように、ウェブログの記事のGitリポジトリを叩くのに使っている。今までGitのフックでGrunt叩いてたけど逆の方が良さそうかな、とGitを使った静的ウェブサイトのデプロイを読んで影響されたので。
$ grunt gitcommit:publish --file=/path/to/foo/bar.txt
Nodeのpathモジュールを使って相対パスに変換するようになっているので、ファイルの指定は絶対パスでも相対パスでも大丈夫。