hgweb: fetch tipmost unfiltered rev thru the changelog
This fixes a traceback when tip is filtered (e.g. because it's secret).
See
issue3783, for which this is a partial fix.
tests: fix test-help.t for '@' bookmark documentation
e031e10cdc06 unexpectedly introduced bookmarks into the results for 'hg
help -k clone'. Mea culpa, miserere &c.
revset: evaluate sub expressions correctly (
issue3775)
Before this patch, sub expression may return unexpected result, if it
is joined with another expression by "or":
- "^"/parentspec():
"R or R^1" is not equal to "R^1 or R". the former returns only "R".
- "~"/ancestorspec():
"R or R~1" is not equal to "R~1 or R". the former returns only "R".
- ":"/rangeset():
"10 or (10 or 15):" is not equal to "(10 or 15): or 10". the
former returns only 10 and 15 or grater (11 to 14 are not
included).
In "or"-ed expression "A or B", the "subset" passed to evaluation of
"B" doesn't contain revisions gotten from evaluation of "A", for
efficiency.
In the other hand, "stringset()" fails to look corresponding revision
for specified string/symbol up, if "subset" doesn't contain that
revision.
So, predicates looking revisions up indirectly should evaluate sub
expressions of themselves not with passed "subset" but with "entire
revisions in the repository", to prevent "stringset()" from unexpected
failing to look symbols in them up.
But predicates in above example don't so. For example, in the case of
"R or R^1":
1. "R^1" is evaluated with "subset" containing revisions other than
"R", because "R" is already gotten by the former of "or"-ed
expressions
2. "parentspec()" evaluates "R" of "R^1" with such "subset"
3. "stringset()" fails to look "R" up, because "R" is not contained
in "subset"
4. so, evaluation of "R^1" returns no revision
This patch evaluates sub expressions for predicates above with "entire
revisions in the repository".
test-rebase: add another test for rebase with multiple roots
This test the case when a Merge is dropped.
update: update to current bookmark if it moved out from under us (
issue3682)
If the current bookmark (the one listed in .hg/bookmarks.current)
doesn't point to a parent of the working directory, e.g. if it was moved
by a pull, use that as the update target instead of the tipmost
descendent.
A small predicate is (finally) added to the bookmarks module to check
whether the current bookmark is also active.
test-bookmarks-pushpull.t: don't set bookmark active unnecessarily
The test in question doesn't have anything to do with having an active
bookmark. This change makes the test change the two bookmarks it affects
without making them active. It clears the way for adding a test for
updating to an active bookmark that moved out from under us.
doc: use "tag" revset predicate instead of "tagged" for example in help
"tag" predicate is officially described in help, but "tagged" is not,
even though the latter works as same as the former.
tests: add regression tests for another revrange edge case
These tests would've passed before
ac0c12123743 and
e441657b372b.
Inserting them to make sure that continues to be the case.