revset: filter first/last members by __and__ operation
This replaces 'if y in subset' with '& subset'. first(null) and last(wdir())
are fixed thanks to fullreposet.__and__.
This also revealed that first() and last() don't follow the order of the
input set. 'ls & subset' is valid only if the ordering requirement is 'define'
or 'any'.
No performance regression observed:
revset #0: limit(0:9999, 100, 9000)
0) 0.001164
1) 0.001135
revset #2: 9000 & limit(0:9999, 100, 9000)
0) 0.001224
1) 0.001181
revset #3: last(0:9999, 100)
0) 0.000237
1) 0.000199
Test update.requiredest
$ cd $TESTTMP
$ cat >> $HGRCPATH <<EOF
> [commands]
> update.requiredest = True
> EOF
$ hg init repo
$ cd repo
$ echo a >> a
$ hg commit -qAm aa
$ hg up
abort: you must specify a destination
(for example: hg update ".::")
[255]
$ hg up .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ HGPLAIN=1 hg up
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg --config commands.update.requiredest=False up
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ..
Check update.requiredest interaction with pull --update
$ hg clone repo clone
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd repo
$ echo a >> a
$ hg commit -qAm aa
$ cd ../clone
$ hg pull --update
abort: update destination required by configuration
(use hg pull followed by hg update DEST)
[255]