Jelmer Vernooij 16 роки тому
батько
коміт
c6de5fdcc6
2 змінених файлів з 14 додано та 4 видалено
  1. 11 1
      dulwich/objects.py
  2. 3 3
      dulwich/tests/test_objects.py

+ 11 - 1
dulwich/objects.py

@@ -27,6 +27,7 @@ from cStringIO import (
 import mmap
 import os
 import stat
+import time
 import zlib
 
 from dulwich.errors import (
@@ -298,7 +299,16 @@ class Tag(ShaFile):
             elif field == TAG_ID:
                 self._name = value
             elif field == TAGGER_ID:
-                self._tagger = value
+                sep = value.index("> ")
+                self._tagger = value[0:sep+1]
+                (timetext, timezonetext) = value[sep+2:].rsplit(" ", 1)
+                try:
+                    self._tag_time = int(timetext)
+                except ValueError: #Not a unix timestamp
+                    self._tag_time = time.strptime(timetext)
+                self._timezonetext = parse_timezone(timezonetext)
+            else:
+                raise AssertionError("Unknown field %s" % field)
         self._message = f.read()
         self._needs_parsing = False
 

+ 3 - 3
dulwich/tests/test_objects.py

@@ -208,7 +208,7 @@ class TreeSerializationTests(unittest.TestCase):
 
 class TagParseTests(unittest.TestCase):
 
-    def test_parse_simple(self):
+    def test_parse_ctime(self):
         x = Tag()
         x.set_raw_string("""object a38d6181ff27824c79fc7df825164a212eff6a3f
 type commit
@@ -225,7 +225,7 @@ OK2XeQOiEeXtT76rV4t2WR4=
 -----END PGP SIGNATURE-----
 """)
         self.assertEquals("Linus Torvalds <torvalds@woody.linux-foundation.org>", x.tagger)
-        self.assertEquals("v2.6.22-rc7", tag.name)
+        self.assertEquals("v2.6.22-rc7", x.name)
 
     def test_parse_no_tagger(self):
         x = Tag()
@@ -243,5 +243,5 @@ OK2XeQOiEeXtT76rV4t2WR4=
 -----END PGP SIGNATURE-----
 """)
         self.assertEquals(None, x.tagger)
-        self.assertEquals("v2.6.22-rc7", tag.name)
+        self.assertEquals("v2.6.22-rc7", x.name)