<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/grit/git.rb</filename>
    </added>
    <added>
      <filename>lib/grit/repo.rb</filename>
    </added>
    <added>
      <filename>test/suite.rb</filename>
    </added>
    <added>
      <filename>test/test_git.rb</filename>
    </added>
    <added>
      <filename>test/test_repo.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -6,10 +6,11 @@ $:.unshift File.dirname(__FILE__)     # For use/testing when no gem is installed
 
 # internal requires
 require 'grit/errors'
+require 'grit/git'
 require 'grit/head'
 require 'grit/commit'
-require 'grit/grit'
+require 'grit/repo'
 
-class Grit
+module Grit
   VERSION = '1.0.0'
 end
\ No newline at end of file</diff>
      <filename>lib/grit.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
-class Grit
+module Grit
   Commit = Struct.new(:id, :parents, :tree, :author, :authored_date, :committer, :committed_date)
 end
\ No newline at end of file</diff>
      <filename>lib/grit/commit.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class Grit
+module Grit
   class InvalidGitRepositoryError &lt; StandardError
   end
 end
\ No newline at end of file</diff>
      <filename>lib/grit/errors.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,44 @@
-class Grit
-  Head = Struct.new(:id, :name, :message, :committer, :date)
-end
\ No newline at end of file
+module Grit
+  
+  class Head
+    attr_accessor :id
+    attr_accessor :name
+    attr_accessor :message
+    attr_accessor :committer
+    attr_accessor :date
+    
+    def initialize(id, name, message, committer, date)
+      self.id = id
+      self.name = name
+      self.message = message
+      self.committer = committer
+      self.date = date
+    end
+    
+    # Create a new Head instance from the given string.
+    #   +line+ is the formatted head information
+    #
+    # Format
+    #   id: [0-9A-Fa-f]{40}
+    #   &lt;space&gt;
+    #   name: [^ ]*
+    #   &lt;space&gt;
+    #   message: [^\0]*
+    #   &lt;null byte&gt;
+    #   committer: .*
+    #   &lt;space&gt;
+    #   epoch: [0-9]+
+    #   &lt;space&gt;
+    #   tz: .*
+    #
+    # Returns Grit::Head
+    def self.from_string(line)
+      ref_info, committer_info = line.split(&quot;\0&quot;)
+      id, name, message = ref_info.split(&quot; &quot;, 3)
+      m, committer, epoch, tz = *committer_info.match(/^(.*) ([0-9]+) (.*)$/)
+      date = Time.at(epoch.to_i)
+      self.new(id, name, message, committer, date)
+    end
+  end # Head
+  
+end # Grit
\ No newline at end of file</diff>
      <filename>lib/grit/head.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,3 +5,5 @@ require 'test/unit'
 require 'mocha'
 
 GRIT_REPO = File.join(File.dirname(__FILE__), *%w[..])
+
+include Grit
\ No newline at end of file</diff>
      <filename>test/helper.rb</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>lib/grit/grit.rb</filename>
    </removed>
    <removed>
      <filename>test/test_grit.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>a47fd41f3aa4610ea527dcc1669dfdb9c15c5425</id>
    </parent>
  </parents>
  <author>
    <name>Tom Preston-Werner</name>
    <email>tom@mojombo.com</email>
  </author>
  <url>http://github.com/mojombo/grit/commit/d01a4cfad6ea50285c4710243e3cbe019d381eba</url>
  <id>d01a4cfad6ea50285c4710243e3cbe019d381eba</id>
  <committed-date>2007-10-10T09:05:03-07:00</committed-date>
  <authored-date>2007-10-10T09:05:03-07:00</authored-date>
  <message>convert to Grit module, refactor to be more OO</message>
  <tree>fb1e576fc4cf9822a47c331738fb27c4ebb9caef</tree>
  <committer>
    <name>Tom Preston-Werner</name>
    <email>tom@mojombo.com</email>
  </committer>
</commit>
