view mercurial/templates/template-vars.txt @ 16696:d1afbf03e69a

rebase: allow collapsing branches in place (issue3111) We allow rebase plus collapse, but not collapse only? I imagine people would rebase first then collapse once they are sure the rebase is correct and it is the right time to finish it. I was reluctant to submit this patch for reasons detailed below, but it improves rebase --collapse usefulness so much it is worth the ugliness. The fix is ugly because we should be fixing the collapse code path rather than the merge. Collapsing by merging changesets repeatedly is inefficient compared to what commit --amend does: commitctx(), update, strip. The problem with the latter is, to generate the synthetic changeset, copy records are gathered with copies.pathcopies(). copies.pathcopies() is still implemented with merging in mind and discards information like file replaced by the copy of another, criss-cross copies and so forth. I believe this information should not be lost, even if we decide not to interpret it fully later, at merge time. The second issue with improving rebase --collapse is the option should not be there to begin with. Rebasing and collapsing are orthogonal and a dedicated command would probably enable a better, simpler ui. We should avoid advertizing rebase --collapse, but with this fix it becomes the best shipped solution to collapse changesets. And for the record, available techniques are: - revert + commit + strip: lose copies - mq/qfold: repeated patching() (mostly correct, fragile) - rebase: repeated merges (mostly correct, fragile) - collapse: revert + tag rewriting wizardry, lose copies - histedit: repeated patching() (mostly correct, fragile) - amend: copies.pathcopies() + commitctx() + update + strip
author Patrick Mezard <patrick@mezard.eu>
date Thu, 03 May 2012 15:14:58 +0200
parents 616ad3f6fd33
children
line wrap: on
line source

repo          the name of the repo
rev           a changeset.manifest revision
node          a changeset node
changesets    total number of changesets
file          a filename
filerev       a file revision
filerevs      total number of file revisions
up            the directory of the relevant file
path          a path in the manifest, starting with "/"
basename      a short pathname
date          a date string
age           age in hours, days, etc
line          a line of text (escaped)
desc          a description (escaped, with breaks)
shortdesc     a short description (escaped)
author        a name or email addressv(obfuscated)
parent        a list of the parent
child         a list of the children
tags          a list of tag

header        the global page header
footer        the global page footer

files         a list of file links
file_copies   a list of pairs of name, source filenames
dirs          a set of directory links
diff          a diff of one or more files
annotate      an annotated file
entries       the entries relevant to the page

url           base url of hgweb interface
logourl       base url of logo
staticurl     base url for static resources


Templates and commands:
  changelog(rev) - a page for browsing changesets
    naventry - a link for jumping to a changeset number
    filenodelink - jump to file diff
    fileellipses - printed after maxfiles
    changelogentry - an entry in the log
  manifest - browse a manifest as a directory tree