[PATCH SnapExtension] Got it working with Mercurial 1.8 and TortoiseHg 2

Srećko Jurić-Kavelj srecko.juric-kavelj at fer.hr
Mon Mar 28 04:48:48 CDT 2011


# HG changeset patch
# User Srećko Jurić-Kavelj <srecko.juric-kavelj at fer.hr>
# Date 1300346240 -3600
# Branch hg_1.7.5/TortoiseHG_1.1.9.1
# Node ID 3063c9ce92dec04a9128e73bc5663806e70734af
# Parent  ec82df41a2b5e6be0f567eed7191f57dc8a41036
Got it working with Mercurial 1.8 and TortoiseHg 2.

Haven't checked all the wrapfunctions, but if there werent any notable changes in
Mercurial API (only util.unlinkpath is documented) everything should work.

Testing is needed.

diff -r ec82df41a2b5 -r 3063c9ce92de snap.py
--- a/snap.py	Mon Feb 14 09:01:48 2011 +0100
+++ b/snap.py	Thu Mar 17 08:17:20 2011 +0100
@@ -338,19 +338,19 @@
 try:                        # TortoiseHG uses its own option parser(s)
     import tortoisehg
     try:
+        import tortoisehg.hgqt.run as hgqt_run
+        def _parseopts(ui, args):
+            try:
+                return hgqt_run._parse(ui, args)[-2] # 
+            except ImportError:
+                return dispatch._parse(ui, args)[-1] # 
+    except ImportError:
         import tortoisehg.hgtk.hgtk as hgtk_hgtk
         def _parseopts(ui, args):
             try:
                 return hgtk_hgtk._parse(ui, args)[-2] # 
             except ImportError:
                 return dispatch._parse(ui, args)[-1] # 
-    except ImportError:
-        import tortoisehg.hgqt.run as hgqt_run
-        def _parseopts(ui, args):
-            try:
-                return hgqt_run._parse(ui, args)[-2] # 
-            except ImportError:
-                return dispatch._parse(ui, args)[-1] # 
 except ImportError:
     def _parseopts(ui, args):
         return dispatch._parse(ui, args)[-1] # 
@@ -1259,7 +1259,7 @@
             else:
                 raise error.RepoError(_('no store at %s') % self.path)
 
-        self.store = store.basicstore(self.path, util.opener, os.path.join)
+        self.store = store.basicstore(self.path, util.opener)
         self.opener = self.store.opener
         self.createmode = self.store.createmode
 
@@ -1388,7 +1388,7 @@
         finally:
             _close(fdest)
             if os.path.lexists(ftmp):
-                util.unlink(ftmp)
+                util.unlinkpath(ftmp)
 
         try:           # just a very rudimentary check of file consistency
             stdest = snapStoreFile(dest, 'r')
@@ -1769,7 +1769,7 @@
                                       (realsize, size))
             self.sendresponse('')
         except (IOError, OSError, Exception), e:
-            util.unlink(tempname)
+            util.unlinkpath(tempname)
             self.sendresponse(str(e))
         return tempname
 
@@ -1835,7 +1835,7 @@
         except error.RepoError, e:
             raise util.Abort(error.RepoError(_('snapget failed: %s') % e))
         finally:
-            util.unlink(tempname)
+            util.unlinkpath(tempname)
 
     def snappush(self, remote, src):
         return remote.snappull(remote=self, src=src)
@@ -3139,7 +3139,7 @@
                 fname = util.normpath(name[5:-2]) # strip data/ and .i
                 for i in flog:
                     n = flog.node(i)
-                    if 'snap' in flog._readmeta(n): # 
+                    if 'snap' in filelog._parsemeta(flog.revision(n)): # 
                         s = flog.read(n)
                         sname = snappedname(repo, s)
                         snapfiles.add(sname)
@@ -3356,7 +3356,7 @@
         if self.path().startswith('.hg') or 'l' in self.flags():
             return False
         flog = self.filelog()
-        return 'snap' in flog._readmeta(self.filenode()) # 
+        return 'snap' in filelog._parsemeta(flog.revision(self.filenode())) # 
 
     for cls in (context.filectx, context.workingfilectx):
         if not (getattr(cls, 'issnap', fctxissnap).func_name in
@@ -3386,7 +3386,7 @@
     def filelogsize(orig, self, rev):
         """return the size of a given revision considering any meta"""
         node = self.node(rev)
-        m = self._readmeta(node)
+        m = filelog._parsemeta(self.revision(node))
         if m:
             return len(self.read(node))
         return revlog.revlog.size(self, rev)


More information about the Mercurial-devel mailing list