<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -31,11 +31,11 @@ class Cia
             &lt;project&gt;#{h @data[:repository][:name]}&lt;/project&gt;
             &lt;branch&gt;#{h @data[:ref].split('/').last}&lt;/branch&gt;
           &lt;/source&gt;
-          &lt;timestamp&gt;#{h commit[:timestamp].to_i}&lt;/timestamp&gt;
+          &lt;timestamp&gt;#{commit[:timestamp].to_i}&lt;/timestamp&gt;
           &lt;body&gt;
             &lt;commit&gt;
-              &lt;author&gt;#{h commit[:author][:name]} (#{h commit[:author][:email]})&lt;/author&gt;
-              &lt;revision&gt;#{h sha}&lt;/revision&gt;
+              &lt;author&gt;#{h &quot;#{commit[:author][:name]} (#{commit[:author][:email]})&quot;}&lt;/author&gt;
+              &lt;revision&gt;#{sha}&lt;/revision&gt;
               &lt;log&gt;#{h commit[:message]}&lt;/log&gt;
               &lt;url&gt;#{h commit[:url]}&lt;/url&gt;
             &lt;/commit&gt;
@@ -139,6 +139,40 @@ if __FILE__ == $0
       assert_nothing_raised(Exception) { @cia.send_commit_messages! }
     end
     
+    def test_should_escape_certain_data_to_not_break_xml_validity
+      cia = Cia.new({
+        :before =&gt; &quot;5aef35982fb2d34e9d9d4502f6ede1072793222d&quot;,
+        :repository =&gt; {
+          :url =&gt; &quot;http://github.com/alloy/undercover&quot;,
+          :name =&gt; &quot;under &amp; cover&quot;,
+          :owner =&gt; {
+            :email =&gt; &quot;e.duran@superalloy.nl&quot;,
+            :name =&gt; &quot;alloy&quot;
+          }
+        },
+        :commits =&gt; {
+          '41a212ee83ca127e3c8cf465891ab7216a705f59' =&gt; {
+            :url =&gt; &quot;undercover?foo=foo&amp;bar=bar&quot;,
+            :author =&gt; {
+              :email =&gt; &quot;&lt;monsieur@&#233;glise.fr&gt;&quot;,
+              :name =&gt; &quot;Mister &amp; Monsieur&quot;
+            },
+            :message =&gt; &quot;&lt;strong&gt;weird&lt;/strong&gt;&quot;,
+            :timestamp =&gt; TIMESTAMP
+          }
+        },
+        :after =&gt; &quot;de8251ff97ee194a289832576287d6f8ad74e3d0&quot;,
+        :ref =&gt; &quot;refs/heads/under&amp;cover&quot;
+      })
+      message = cia.commit_messages.first
+      
+      assert message.include?('&lt;project&gt;under &amp;amp; cover&lt;/project&gt;')
+      assert message.include?('&lt;author&gt;Mister &amp;amp; Monsieur (&amp;lt;monsieur@&#233;glise.fr&amp;gt;)&lt;/author&gt;')
+      assert message.include?('&lt;log&gt;&amp;lt;strong&amp;gt;weird&amp;lt;/strong&amp;gt;&lt;/log&gt;')
+      assert message.include?('&lt;branch&gt;under&amp;amp;cover&lt;/branch&gt;')
+      assert message.include?('&lt;url&gt;undercover?foo=foo&amp;amp;bar=bar&lt;/url&gt;')
+    end
+    
     private
     
     def elm(xpath)</diff>
      <filename>undercover.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>72ca3295774560c14beb99a20d99c1dc5511d5b1</id>
    </parent>
  </parents>
  <author>
    <name>Eloy Duran</name>
    <email>eloy.de.enige@gmail.com</email>
  </author>
  <url>http://github.com/alloy/undercover/commit/94482431df1756b8b26811de6ddb22a2c97a9e66</url>
  <id>94482431df1756b8b26811de6ddb22a2c97a9e66</id>
  <committed-date>2008-04-11T02:02:54-07:00</committed-date>
  <authored-date>2008-04-11T02:02:54-07:00</authored-date>
  <message>Added tests for escaping and removed a few escapes.</message>
  <tree>49ede973f4d4c1786f9901c31dafa0a60391b6b5</tree>
  <committer>
    <name>Eloy Duran</name>
    <email>eloy.de.enige@gmail.com</email>
  </committer>
</commit>
