[PATCH SnapExtension] Got it working with Mercurial 1.8 and TortoiseHg 2
Martin Geisler
mg at aragost.com
Wed Apr 6 06:43:04 CDT 2011
Srećko Jurić-Kavelj <srecko.juric-kavelj at fer.hr> writes:
> # 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.
That is cool. May I ask how many and how large files you manage with
this extension?
You should probably add Klaus Koch in Cc on such patches. Or you can
make a fork of his repository on Bitbucket and send him a pull request:
https://bitbucket.org/kuk42/hgsnap/changesets
> 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)
--
Martin Geisler
aragost Trifork
Professional Mercurial support
http://mercurial.aragost.com/kick-start/
More information about the Mercurial-devel
mailing list