log: resolve --follow thoroughly in getlogrevs()
This makes sense because --follow isn't really an option to filter revisions,
but an option to extend revisions to be filtered.
_fileancestors() is a minimal copy of revset._follow(). They are slightly
different in that which revision the matcher sees. _fileancestors() also
uses ctx.walk() instead of ctx.manifest().walk() to show a better warning
on bad match, which will be tested later.
log: extract function that processes log file patterns
We'll need a matcher to compute revs followed from the given patterns.
log: resolve --follow with -rREV in cmdutil.getlogrevs()
This also fixes alias expansion. Before, reverse() could be overridden by user
alias.
This isn't processed at _logrevs() as we'll need starting revisions to parse
file patterns. See the subsequent patches for details.
log: remove dead code to follow descendants if ascending revisions specified
It's been disabled since
8b4b9ee6001a "log: make -fr show complete history
from the given revs" 2015-02-06, and we've got no bug report regarding this
exact behavior. For details what the heck "followdescendants" is, please see
the issue comment:
https://bz.mercurial-scm.org/show_bug.cgi?id=4959#c72
"'rev(%d)' % startrev" can be replaced with '.' since revs are 'reversed(:.)'.
log: duplicate _logrevs() dedicated for walkchangerevs()
Prepares for refactoring getlogrevs() to fix the "log -frREV PATH" issue.
I initially thought I could get rid of walkchangerevs(), but it turned out
requiring non-trivial work because of a "prepare" callback and a scanning
window. This patch makes sure that walkchangerevs() will be unaffected by
subsequent changes.
update: fix crash on bare update when directaccess is enabled
'rev' may be None. An empty 'rev' string shouldn't also be passed to
unhidehashlikerevs().
templater: make sure expression is terminated by '}'
This can't be ensured by the tokenize() generator since the parser stop
consuming tokens once it reached an end of an operation.
Spotted by Matt Harbison.
bookmark: deprecate direct update of a bookmark value
This changeset was part of an older series preventing direct update of the
bookmarks store without the change being tracked by a transaction. For some
unclear reason, this was not sent to the list. So we are sending it now.
Initial series:
3325c7dcabaa+
08bf0ebc6c8e+
712a85b3677f.
We want to channel all bookmarks update through 'applychanges' so let's remove
more way to work around this function.