summaryrefslogtreecommitdiff
path: root/hg.py
diff options
context:
space:
mode:
authorSylvain Th?nault <sylvain.thenault@logilab.fr>2011-01-10 14:21:17 +0100
committerSylvain Th?nault <sylvain.thenault@logilab.fr>2011-01-10 14:21:17 +0100
commitd25f92acfb4840cfa6f41e40d58f915d32d717fc (patch)
tree3a6343a41a2f8ecc94c2f6aded14b9c77800b2a2 /hg.py
parentc3071d83300c34c3d5ccc24b84560b9ff9d4fb6e (diff)
downloadlogilab-common-d25f92acfb4840cfa6f41e40d58f915d32d717fc.tar.gz
[mercurial] add function to get incoming/outgoing changesets whatever mercurial's version
Diffstat (limited to 'hg.py')
-rw-r--r--hg.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/hg.py b/hg.py
index 17e075f..0538a38 100644
--- a/hg.py
+++ b/hg.py
@@ -98,3 +98,22 @@ def get_repository(path):
if repopath is None:
raise RuntimeError('no repository found in %s' % osp.abspath(path))
return Repository(Ui(), path=repopath)
+
+def incoming(wdrepo, masterrepo):
+ try:
+ return wdrepo.findincoming(masterrepo)
+ except AttributeError:
+ from mercurial import hg, discovery
+ revs, checkout = hg.addbranchrevs(wdrepo, masterrepo, ('', []), None)
+ common, incoming, rheads = discovery.findcommonincoming(
+ wdrepo, masterrepo, heads=revs)
+ return masterrepo.changelog.nodesbetween(incoming, revs)[0]
+
+def outgoing(wdrepo, masterrepo):
+ try:
+ return wdrepo.findoutgoing(masterrepo)
+ except AttributeError:
+ from mercurial import hg, discovery
+ revs, checkout = hg.addbranchrevs(wdrepo, wdrepo, ('', []), None)
+ o = discovery.findoutgoing(wdrepo, masterrepo)
+ return wdrepo.changelog.nodesbetween(o, revs)[0]