<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -56,7 +56,7 @@ class Version
 
   # Parses a version string to create an instance of the Version class.
   def self.parse(version)
-    m = version.match(/(\d+)\.(\d+)(?:\.(\d+))?(?:\sM(\d+))?(?:\s\((\d+)\))?(?:\sof\s\w)?(?:\sby\s\w)?(?:\son\s\S)?/)
+    m = version.match(/(\d+)\.(\d+)(?:\.(\d+))?(?:\sM(\d+))?(?:\s\((\d+)\))?(?:\sof\s(\w+))?(?:\sby\s(\w+))?(?:\son\s(\S+))?/)
 
     raise ArgumentError.new(&quot;The version '#{version}' is unparsable&quot;) if m.nil?
 
@@ -86,7 +86,7 @@ class Version
     #   return self.build &lt;=&gt; other.build
     # end
 
-    %w(build major minor patch milestone).each do |meth|
+    %w(build major minor patch milestone branch committer build_date).each do |meth|
       rhs = self.send(meth) || -1 
       lhs = other.send(meth) || -1
 </diff>
      <filename>lib/app_version.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,5 +5,5 @@ patch:      3
 milestone:  4
 build:      500
 branch:     master
-committer:  jschank
-build-date: 1967-02-27
\ No newline at end of file
+committer:  coder
+build_date: 2008-10-27
\ No newline at end of file</diff>
      <filename>test/version.yml</filename>
    </modified>
    <modified>
      <diff>@@ -12,8 +12,8 @@ class VersionTest &lt; Test::Unit::TestCase
     @version.milestone = 4
     @version.build = 500
     @version.branch = 'master'
-    @version.committer = 'jschank'
-    @version.build_date = Date.civil(1967, 2, 27)
+    @version.committer = 'coder'
+    @version.build_date = Date.civil(2008, 10, 27)
   end
 
   def test_load_from_file
@@ -22,7 +22,7 @@ class VersionTest &lt; Test::Unit::TestCase
   end
 
   def test_create_from_string
-    version = Version.parse '1.2.3 M4 (500) of master by jschank on 02/27/1967'
+    version = Version.parse '1.2.3 M4 (500) of master by coder on 2008-10-27'
     assert_equal @version, version
     
     version = Version.parse '1.2.3 M4 (500)'
@@ -60,7 +60,7 @@ class VersionTest &lt; Test::Unit::TestCase
     @version.build_date = nil
     assert_equal @version, version
 
-    version = Version.parse '2007.200.10 M9 (6) of branch by coder on 10/31/2008'
+    version = Version.parse '2007.200.10 M9 (6) of branch by coder on 2008-10-27'
     @version.major = 2007
     @version.minor = 200
     @version.patch = 10
@@ -79,8 +79,8 @@ class VersionTest &lt; Test::Unit::TestCase
       :milestone =&gt; 4, 
       :build =&gt; 500, 
       :branch =&gt; 'master', 
-      :committer =&gt; 'jschank', 
-      :build_date =&gt; Date.civil(1967, 2, 27)
+      :committer =&gt; 'coder', 
+      :build_date =&gt; Date.civil(2008, 10, 27)
     assert_equal @version, version
   end
 
@@ -91,8 +91,8 @@ class VersionTest &lt; Test::Unit::TestCase
       'milestone' =&gt; 4, 
       'build' =&gt; 500,
       'branch' =&gt; 'master',
-      'committer' =&gt; 'jschank',
-      'build_date' =&gt; '1967-02-27'
+      'committer' =&gt; 'coder',
+      'build_date' =&gt; '2008-10-27'
     assert_equal @version, version
   end
 
@@ -103,8 +103,8 @@ class VersionTest &lt; Test::Unit::TestCase
       :milestone =&gt; '4', 
       :build =&gt; '500',
       :branch =&gt; 'master', 
-      :committer =&gt; 'jschank', 
-      :build_date =&gt; '1967-02-27'
+      :committer =&gt; 'coder', 
+      :build_date =&gt; '2008-10-27'
     assert_equal @version, version
   end
 
@@ -115,11 +115,24 @@ class VersionTest &lt; Test::Unit::TestCase
       'milestone' =&gt; '4', 
       'build' =&gt; '500',
       'branch' =&gt; 'master',
-      'committer' =&gt; 'jschank',
-      'build_date' =&gt; '1967-02-27'
+      'committer' =&gt; 'coder',
+      'build_date' =&gt; '2008-10-27'
     assert_equal @version, version
   end
 
+  def test_create_from_hash_with_invalid_date
+    # note - Date.parse will make heroic efforts to understand the date text.
+    version = Version.new :major =&gt; '1', 
+      :minor =&gt; '2', 
+      :patch =&gt; '3', 
+      :milestone =&gt; '4', 
+      :build =&gt; '500',
+      :branch =&gt; 'master', 
+      :committer =&gt; 'coder', 
+      :build_date =&gt; '12wtf34'
+    assert_not_equal @version, version
+  end
+
   def test_should_raise_when_major_is_missing
     assert_raises(ArgumentError) {
       Version.new :minor =&gt; 2, :milestone =&gt; 3, :build =&gt; 400
@@ -190,49 +203,49 @@ class VersionTest &lt; Test::Unit::TestCase
   end
 
   def test_to_s
-    assert_equal '1.2.3 M4 (500) of master by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 M4 (500) of master by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_milestone
     @version.milestone = nil
-    assert_equal '1.2.3 (500) of master by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 (500) of master by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_build
     @version.build = nil
-    assert_equal '1.2.3 M4 of master by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 M4 of master by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_patch
     @version.patch = nil
-    assert_equal '1.2 M4 (500) of master by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2 M4 (500) of master by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_build_or_milestone
     @version.milestone = nil
     @version.build = nil
-    assert_equal '1.2.3 of master by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 of master by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_branch
     @version.branch = nil
-    assert_equal '1.2.3 M4 (500) by jschank on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 M4 (500) by coder on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_committer
     @version.committer = nil
-    assert_equal '1.2.3 M4 (500) of master on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 M4 (500) of master on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_build_date
     @version.build_date = nil
-    assert_equal '1.2.3 M4 (500) of master by jschank', @version.to_s
+    assert_equal '1.2.3 M4 (500) of master by coder', @version.to_s
   end
 
   def test_to_s_with_no_branch_or_committer
     @version.branch = nil
     @version.committer = nil
-    assert_equal '1.2.3 M4 (500) on 1967-02-27', @version.to_s
+    assert_equal '1.2.3 M4 (500) on 2008-10-27', @version.to_s
   end
 
   def test_to_s_with_no_committer_or_build_date</diff>
      <filename>test/version_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2c9ff4657dc883c18452a9131d7b614f7e52594e</id>
    </parent>
  </parents>
  <author>
    <name>John F. Schank III</name>
    <email>jschank@mac.com</email>
  </author>
  <url>http://github.com/toland/app_version/commit/336f9e926598c6d8671082e962bdb0b5fa6b2217</url>
  <id>336f9e926598c6d8671082e962bdb0b5fa6b2217</id>
  <committed-date>2008-10-27T21:24:44-07:00</committed-date>
  <authored-date>2008-10-27T21:24:44-07:00</authored-date>
  <message>got regex working</message>
  <tree>617d15978a1e91b07f12f9fbe9f808493b187896</tree>
  <committer>
    <name>John F. Schank III</name>
    <email>jschank@mac.com</email>
  </committer>
</commit>
