Mercurial > hg > mercurial-source
view mercurial/help/templates.txt @ 20280:95b9c6149e17
merge: consider successor changesets for a bare update
Previously, a bare update would ignore any successor changesets thus
potentially leaving you on an obsolete head. This happens commonly when there
is an old bookmark that hasn't been moved forward which is the motivating
reason for this patch series.
Now, we will check for successor changesets if two conditions hold: 1) we are
doing a bare update 2) *and* we are currently on an obsolete head.
If we are in this situation, then we calculate the branchtip of the successor
set and update to that changeset.
Tests coverage has been added.
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Wed, 15 Jan 2014 16:41:18 -0600 |
parents | 574f3b6e0e8b |
children | 01a75c9d5b5e |
line wrap: on
line source
Mercurial allows you to customize output of commands through templates. You can either pass in a template from the command line, via the --template option, or select an existing template-style (--style). You can customize output for any "log-like" command: log, outgoing, incoming, tip, parents, heads and glog. Five styles are packaged with Mercurial: default (the style used when no explicit preference is passed), compact, changelog, phases and xml. Usage:: $ hg log -r1 --style changelog A template is a piece of text, with markup to invoke variable expansion:: $ hg log -r1 --template "{node}\n" b56ce7b07c52de7d5fd79fb89701ea538af65746 Strings in curly braces are called keywords. The availability of keywords depends on the exact context of the templater. These keywords are usually available for templating a log-like command: .. keywordsmarker The "date" keyword does not produce human-readable output. If you want to use a date in your output, you can use a filter to process it. Filters are functions which return a string based on the input variable. Be sure to use the stringify filter first when you're applying a string-input filter to a list-like input variable. You can also use a chain of filters to get the desired output:: $ hg tip --template "{date|isodate}\n" 2008-08-21 18:22 +0000 List of filters: .. filtersmarker Note that a filter is nothing more than a function call, i.e. ``expr|filter`` is equivalent to ``filter(expr)``. In addition to filters, there are some basic built-in functions: - date(date[, fmt]) - fill(text[, width]) - get(dict, key) - if(expr, then[, else]) - ifeq(expr, expr, then[, else]) - join(list, sep) - label(label, expr) - rstdoc(text, style) - strip(text[, chars]) - sub(pat, repl, expr) Also, for any expression that returns a list, there is a list operator: - expr % "{template}" Some sample command line templates: - Format lists, e.g. files:: $ hg log -r 0 --template "files:\n{files % ' {file}\n'}" - Join the list of files with a ", ":: $ hg log -r 0 --template "files: {join(files, ', ')}\n" - Format date:: $ hg log -r 0 --template "{date(date, '%Y')}\n" - Output the description set to a fill-width of 30:: $ hg log -r 0 --template "{fill(desc, '30')}" - Use a conditional to test for the default branch:: $ hg log -r 0 --template "{ifeq(branch, 'default', 'on the main branch', 'on branch {branch}')}\n" - Append a newline if not empty:: $ hg tip --template "{if(author, '{author}\n')}" - Label the output for use with the color extension:: $ hg log -r 0 --template "{label('changeset.{phase}', node|short)}\n" - Invert the firstline filter, i.e. everything but the first line:: $ hg log -r 0 --template "{sub(r'^.*\n?\n?', '', desc)}\n" - Display the contents of the 'extra' field, one per line:: $ hg log -r 0 --template "{join(extras, '\n')}\n"