The Git-Ruby project is no longer maintained by me. I will leave it up here for now, but almost all of this code has since been incorporated into the Grit project (http://github.com/schacon/grit) and works much, much better. If you're interested in using Git from Ruby, please check out Grit (specifically the schacon/grit fork) - it does as much as it can from Ruby and falls back to system calls if it needs to. The API is different, but the project is being actively maintained.
A pure ruby implementation of Git
Git public hosting of the project source code and project wiki is at:
I have included a command line pure-ruby git client called 'gitr'
The following commands are available - they all will run in pure ruby, without forking out the the git binary. In fact, they can be run on a machine without git compiled on it.
Commands currently implemented:
- cat-file (treeish)
- rev-parse (treeish)
- ls-tree (tree)
Here are some of examples of how to use the Git-Ruby package.
First you have to remember to require rubygems if it's not. Then include the 'git-ruby' gem.
require 'rubygems' require 'git-ruby' g = GitRuby.open('my_project') # has a .git subdir g.add('file') g.commit('commit message') g.log.each do |commit| puts commit.sha puts commit.message puts commit.author.email commit.gtree.children.each do |name, obj| if obj.tree? puts ['tree: ' name, obj.sha].join("\t") end if obj.blob? puts ['blob: ' name, obj.sha].join("\t") end end end