Mercurial > evolve
diff hgext/obsolete.py @ 203:9799d0aa53c8
[obsolete] add supprt for futur Hg 2.2
author | Alain Leufroy <alain.leufroy@logilab.fr> |
---|---|
date | Mon, 16 Apr 2012 10:51:40 +0200 |
parents | 83b7e2c62ac3 |
children | 50039b9b535e |
line wrap: on
line diff
--- a/hgext/obsolete.py Mon Apr 16 10:03:16 2012 +0200 +++ b/hgext/obsolete.py Mon Apr 16 10:51:40 2012 +0200 @@ -364,9 +364,15 @@ opull = repo.pull opush = repo.push o_rollback = repo._rollback - o_writejournal = repo._writejournal ocancopy = repo.cancopy + # /!\ api change in Hg 2.2 (97efd26eb9576f39590812ea9) /!\ + if util.safehasattr(repo, '_journalfiles'): # Hg 2.2 + o_journalfiles = repo._journalfiles + else: # XXX remove this bloc while breaking support to Hg 2.1 + o_writejournal = repo._writejournal + + class obsoletingrepo(repo.__class__): ### Public method @@ -384,7 +390,10 @@ obs = set() nm = self.changelog.nodemap for obj in self._obsobjrels: - rev = nm.get(obj, None) + try: # /!\api change in Hg 2.2 (e8d37b78acfb22ae2c1fb126c2)/!\ + rev = nm.get(obj) + except TypeError: #XXX to remove while breaking Hg 2.1 support + rev = nm.get(obj, None) if rev is not None: obs.add(rev) return obs @@ -529,20 +538,24 @@ return result - ### rollback support - def _writejournal(self, desc): - """wrapped version of _writejournal that save obsolete data""" - entries = list(o_writejournal(desc)) - filename = 'obsolete-relations' - filepath = self.join(filename) - if os.path.exists(filepath): - journalname = 'journal.' + filename - journalpath = self.join(journalname) - util.copyfile(filepath, journalpath) - entries.append(journalpath) - return tuple(entries) + # /!\ api change in Hg 2.2 (97efd26eb9576f39590812ea9) /!\ + if util.safehasattr(repo, '_journalfiles'): # Hg 2.2 + def _journalfiles(self): + return o_journalfiles() + ('journal.obsolete-relations',) + else: # XXX remove this bloc while breaking support to Hg 2.1 + def _writejournal(self, desc): + """wrapped version of _writejournal that save obsolete data""" + entries = list(o_writejournal(desc)) + filename = 'obsolete-relations' + filepath = self.join(filename) + if os.path.exists(filepath): + journalname = 'journal.' + filename + journalpath = self.join(journalname) + util.copyfile(filepath, journalpath) + entries.append(journalpath) + return tuple(entries) def _rollback(self, dryrun=False, **kwargs): """wrapped version of _rollback that restore obsolete data"""