# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: john@arbash-meinel.com-20090106151157-1eb23rpqw10hal27
# target_branch: http://bazaar-vcs.org/bzr/bzr.dev
# testament_sha1: e2838e3fd103d54b4e114825f02eda83b952b212
# timestamp: 2009-01-06 09:12:10 -0600
# source_branch: http://bzr.arbash-meinel.com/branches/bzr/jam-\
#   integration
# base_revision_id: pqm@pqm.ubuntu.com-20090106073252-m4c72a1m7004nqmz
# 
# Begin patch
=== modified file 'bzrlib/patiencediff.py'
--- bzrlib/patiencediff.py	2007-09-04 09:10:35 +0000
+++ bzrlib/patiencediff.py	2009-01-06 15:02:42 +0000
@@ -76,11 +76,16 @@
         import difflib
         sequencematcher = difflib.SequenceMatcher
 
+    if fromfiledate:
+        fromfiledate = ' ' + str(fromfiledate)
+    if tofiledate:
+        tofiledate = ' ' + str(tofiledate)
+
     started = False
     for group in sequencematcher(None,a,b).get_grouped_opcodes(n):
         if not started:
-            yield '--- %s %s%s' % (fromfile, fromfiledate, lineterm)
-            yield '+++ %s %s%s' % (tofile, tofiledate, lineterm)
+            yield '--- %s%s%s' % (fromfile, fromfiledate, lineterm)
+            yield '+++ %s%s%s' % (tofile, tofiledate, lineterm)
             started = True
         i1, i2, j1, j2 = group[0][1], group[-1][2], group[0][3], group[-1][4]
         yield "@@ -%d,%d +%d,%d @@%s" % (i1+1, i2-i1, j1+1, j2-j1, lineterm)

=== modified file 'bzrlib/tests/test_diff.py'
--- bzrlib/tests/test_diff.py	2008-09-01 14:03:34 +0000
+++ bzrlib/tests/test_diff.py	2009-01-06 15:11:57 +0000
@@ -1083,8 +1083,8 @@
                  'how are you today?\n']
         unified_diff = bzrlib.patiencediff.unified_diff
         psm = self._PatienceSequenceMatcher
-        self.assertEquals([ '---  \n',
-                           '+++  \n',
+        self.assertEquals(['--- \n',
+                           '+++ \n',
                            '@@ -1,3 +1,2 @@\n',
                            ' hello there\n',
                            '-world\n',
@@ -1095,8 +1095,8 @@
         txt_a = map(lambda x: x+'\n', 'abcdefghijklmnop')
         txt_b = map(lambda x: x+'\n', 'abcdefxydefghijklmnop')
         # This is the result with LongestCommonSubstring matching
-        self.assertEquals(['---  \n',
-                           '+++  \n',
+        self.assertEquals(['--- \n',
+                           '+++ \n',
                            '@@ -1,6 +1,11 @@\n',
                            ' a\n',
                            ' b\n',
@@ -1111,8 +1111,8 @@
                            ' f\n']
                           , list(unified_diff(txt_a, txt_b)))
         # And the patience diff
-        self.assertEquals(['---  \n',
-                           '+++  \n',
+        self.assertEquals(['--- \n',
+                           '+++ \n',
                            '@@ -4,6 +4,11 @@\n',
                            ' d\n',
                            ' e\n',
@@ -1129,6 +1129,27 @@
                           , list(unified_diff(txt_a, txt_b,
                                  sequencematcher=psm)))
 
+    def test_patience_unified_diff_with_dates(self):
+        txt_a = ['hello there\n',
+                 'world\n',
+                 'how are you today?\n']
+        txt_b = ['hello there\n',
+                 'how are you today?\n']
+        unified_diff = bzrlib.patiencediff.unified_diff
+        psm = self._PatienceSequenceMatcher
+        self.assertEquals(['--- a 2008-08-08\n',
+                           '+++ b 2008-09-09\n',
+                           '@@ -1,3 +1,2 @@\n',
+                           ' hello there\n',
+                           '-world\n',
+                           ' how are you today?\n'
+                          ]
+                          , list(unified_diff(txt_a, txt_b,
+                                 fromfile='a', tofile='b',
+                                 fromfiledate='2008-08-08',
+                                 tofiledate='2008-09-09',
+                                 sequencematcher=psm)))
+
 
 class TestPatienceDiffLib_c(TestPatienceDiffLib):
 
@@ -1174,8 +1195,8 @@
 
         unified_diff_files = bzrlib.patiencediff.unified_diff_files
         psm = self._PatienceSequenceMatcher
-        self.assertEquals(['--- a1 \n',
-                           '+++ b1 \n',
+        self.assertEquals(['--- a1\n',
+                           '+++ b1\n',
                            '@@ -1,3 +1,2 @@\n',
                            ' hello there\n',
                            '-world\n',
@@ -1190,8 +1211,8 @@
         open('b2', 'wb').writelines(txt_b)
 
         # This is the result with LongestCommonSubstring matching
-        self.assertEquals(['--- a2 \n',
-                           '+++ b2 \n',
+        self.assertEquals(['--- a2\n',
+                           '+++ b2\n',
                            '@@ -1,6 +1,11 @@\n',
                            ' a\n',
                            ' b\n',
@@ -1207,8 +1228,8 @@
                           , list(unified_diff_files('a2', 'b2')))
 
         # And the patience diff
-        self.assertEquals(['--- a2 \n',
-                           '+++ b2 \n',
+        self.assertEquals(['--- a2\n',
+                           '+++ b2\n',
                            '@@ -4,6 +4,11 @@\n',
                            ' d\n',
                            ' e\n',

# Begin bundle
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