More UTF-8 vs. mercurial vs. os.listdir problems.
[redakcja.git] / lib / wlrepo / mercurial_backend / __init__.py
index c1d3d30..f919e81 100644 (file)
@@ -5,6 +5,10 @@ __date__ = "$2009-09-25 09:20:22$"
 __doc__ = "Module documentation."
 
 import wlrepo
 __doc__ = "Module documentation."
 
 import wlrepo
+from mercurial.node import nullid
+
+from mercurial import encoding
+encoding.encoding = 'utf-8'
 
 class MercurialRevision(wlrepo.Revision):
 
 
 class MercurialRevision(wlrepo.Revision):
 
@@ -27,11 +31,11 @@ class MercurialRevision(wlrepo.Revision):
         
     @property
     def document_name(self):
         
     @property
     def document_name(self):
-        return self._docname
+        return self._docname and self._docname.decode('utf-8')
 
     @property
     def user_name(self):
 
     @property
     def user_name(self):
-        return self._username
+        return self._username and self._username.decode('utf-8')
 
     def hgrev(self):
         return self._changectx.node()
 
     def hgrev(self):
         return self._changectx.node()
@@ -42,9 +46,16 @@ class MercurialRevision(wlrepo.Revision):
     def hgbranch(self):
         return self._changectx.branch()
 
     def hgbranch(self):
         return self._changectx.branch()
 
+    @property
+    def timestamp(self):
+        return self._changectx.date()[0]
+
     def __unicode__(self):
         return u"%s" % self._changectx.hex()
 
     def __unicode__(self):
         return u"%s" % self._changectx.hex()
 
+    def __str__(self):
+        return self.__unicode__().encode('utf-8')
+
     def __repr__(self):
         return "%s" % self._changectx.hex()
 
     def __repr__(self):
         return "%s" % self._changectx.hex()
 
@@ -64,12 +75,15 @@ class MercurialRevision(wlrepo.Revision):
         a = self._changectx.ancestor(other._changectx)       
         return (a.branch() == self._changectx.branch())
 
         a = self._changectx.ancestor(other._changectx)       
         return (a.branch() == self._changectx.branch())
 
+    def has_children(self):
+        return bool(self._library._hgrepo.changelog.children(self.hgrev()))
+
     def merge_with(self, other, user, message):
     def merge_with(self, other, user, message):
-        lock = self._library._lock(True)
+        lock = self._library.lock(True)
         try:
             self._library._checkout(self._changectx.node())
             status = self._library._merge(other._changectx.node())
         try:
             self._library._checkout(self._changectx.node())
             status = self._library._merge(other._changectx.node())
-            if status.is_clean():
+            if status.isclean():
                 self._library._commit(user=user, message=message)
                 return (True, True)
             else:
                 self._library._commit(user=user, message=message)
                 return (True, True)
             else: