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
This commit is contained in:
Adrian Buehlmann 2010-10-05 11:34:13 +02:00
parent 83637cabbd
commit 5fa66b2722
2 changed files with 96 additions and 1 deletions

View File

@ -435,12 +435,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):

View File

@ -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'