merge: do early copy to deal with issue636
Without copies/renames, merges source names are 1:1 with their
targets. Copies and renames introduce the possibility that there will
be two merges with the same input but different output. By doing the
copy to the destination name before the merge, the actual merge
becomes 1:1 again, and no source is the input to two different merges.
- add a preliminary scan to applyupdates to do copies
- for the merge action, pass the old name (for finding ancestors) and
the new name (for input to the merge) to filemerge
- eliminate the old post-merge copy
- lookup file contents from new name in filemerge
- pass new name to external merge helper
- report merge failure at new name
- add a test
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
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