Gritをつかってrubyでgitを操作してみる

gritというライブラリを使うとgitをrubyで操作できるらしいからすっごい適当に使ってみた。

もっとちゃんと使いたい人はgithub行ってソースなりドキュメントなりをみてくだしあ
http://github.com/mojombo/grit/tree/master


まずはgritをインストール

$ sudo gem sources -a http://gems.github.com/
$ sudo gem install mojombo-grit


git-logっぽいものを出力

require 'rubygems'
require 'grit'
include Grit

gt = Repo.new "/git/repos/path"

#=======gitlog=========
gt.commits.each do |commit|
  puts commit.message
end

つぎにgit-diffみたいな感じ

require 'rubygems'
require 'grit'
include Grit

gt = Repo.new "/git/repos/path"

#=======git.diff========
gt.commits[0].diffs.each do |df|
  puts df.diff
end

最後にbareリポジトリを作って終わりとします。

require 'rubygems'
require 'grit'
include Grit

#=======initialaize========
path = "/git/bare/path/hoge.git"
git = Grit::Git.new(path)
git.init("")
FileUtils.touch(File.join(path, "git-daemon-export-ok"))
system(%Q{GIT_DIR="#{path}" git update-server-info})

最後のやつはちょっと使えるかもしれない。