[PATCH] revset: fix #branch in urls for outgoing()
Adrian Buehlmann
adrian at cadifra.com
Tue Oct 5 10:57:51 CDT 2010
# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1286271253 -7200
# Node ID 8243452c6a1eefda86b2a90abe7e5fa6ebb47280
# Parent f365aed7cc5b4ce5f42d1e2d20001e2dc7951c5b
revset: fix #branch in urls for outgoing()
hg log -r 'outgoing(..)' ignored #branch in some cases.
This patch fixes it.
The cases where it misbehaved are now covered by the added
test-revset-outgoing.t
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -456,12 +456,15 @@ def outgoing(repo, subset, x):
dest = l and getstring(l[0], _("outgoing wants a repository path")) or ''
dest = repo.ui.expandpath(dest or 'default-push', dest or 'default')
dest, branches = hg.parseurl(dest)
+ revs, checkout = hg.addbranchrevs(repo, repo, branches, [])
+ if revs:
+ revs = [repo.lookup(rev) for rev in revs]
other = hg.repository(hg.remoteui(repo, {}), dest)
repo.ui.pushbuffer()
o = discovery.findoutgoing(repo, other)
repo.ui.popbuffer()
cl = repo.changelog
- o = set([cl.rev(r) for r in repo.changelog.nodesbetween(o, None)[0]])
+ o = set([cl.rev(r) for r in repo.changelog.nodesbetween(o, revs)[0]])
return [r for r in subset if r in o]
def tagged(repo, subset, x):
diff --git a/tests/test-revset-outgoing.t b/tests/test-revset-outgoing.t
new file mode 100644
--- /dev/null
+++ b/tests/test-revset-outgoing.t
@@ -0,0 +1,92 @@
+ $ cat >> $HGRCPATH <<EOF
+ > [extensions]
+ > graphlog=
+ >
+ > [alias]
+ > tlog = log --template "{rev}:{node|short}: '{desc}' {branches}\n"
+ > tglog = tlog -G
+ > tout = out --template "{rev}:{node|short}: '{desc}' {branches}\n"
+ > EOF
+
+ $ hg init a
+ $ cd a
+
+ $ echo a > a
+ $ hg ci -Aqm0
+
+ $ echo foo >> a
+ $ hg ci -Aqm1
+
+ $ hg up -q 0
+
+ $ hg branch stable
+ marked working directory as branch stable
+ $ echo bar >> a
+ $ hg ci -qm2
+
+ $ hg tglog
+ @ 2:7bee6c3bea3a: '2' stable
+ |
+ | o 1:3560197d8331: '1'
+ |/
+ o 0:f7b1eb17ad24: '0'
+
+
+ $ cd ..
+
+ $ hg clone -q a#stable b
+
+ $ cd b
+ $ cat .hg/hgrc
+ [paths]
+ default = */a#stable (glob)
+
+ $ echo red >> a
+ $ hg ci -qm3
+
+ $ hg up -q default
+
+ $ echo blue >> a
+ $ hg ci -qm4
+
+ $ hg tglog
+ @ 3:f0461977a3db: '4'
+ |
+ | o 2:1d4099801a4e: '3' stable
+ | |
+ | o 1:7bee6c3bea3a: '2' stable
+ |/
+ o 0:f7b1eb17ad24: '0'
+
+
+ $ hg tout
+ comparing with */a (glob)
+ searching for changes
+ 2:1d4099801a4e: '3' stable
+
+ $ hg tlog -r 'outgoing()'
+ 2:1d4099801a4e: '3' stable
+
+ $ hg tout ../a#default
+ comparing with ../a
+ searching for changes
+ 3:f0461977a3db: '4'
+
+ $ hg tlog -r 'outgoing("../a#default")'
+ 3:f0461977a3db: '4'
+
+ $ echo "green = ../a#default" >> .hg/hgrc
+
+ $ cat .hg/hgrc
+ [paths]
+ default = */a#stable (glob)
+ green = ../a#default
+
+ $ hg tout green
+ comparing with */a (glob)
+ searching for changes
+ 3:f0461977a3db: '4'
+
+ $ hg tlog -r 'outgoing("green")'
+ 3:f0461977a3db: '4'
+
More information about the Mercurial-devel
mailing list