view contrib/xml.rnc @ 48509:5151b0f6519e

simplemerge: make `localorother` a "mode" instead of a separate thing `simplemerge()` takes a `mode` argument, which can be "union", "merge" or "mergediff", and a `localorother` argument, which can be `None`, "local", or "other". The two options are not at all orthogonal -- most combinations don't make sense. Also, at least "union", "local", and "other" are very closely related. Therefore, it makes sense to combine them into one. It probably makes sense to split the `mode` argument into `resolve` and `marker_style`, where the former can be `None`, "union", "local", or "other", and the latter can be "merge", "merge3", "mergediff", or "minimize". This is a good step in that direction whether or not we end up doing that. Differential Revision: https://phab.mercurial-scm.org/D11887
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 07 Dec 2021 17:48:50 -0800
parents 3acfb69a4729
children
line wrap: on
line source

# RelaxNG schema for "xml" log style
# Inspired by Subversion's XML log format.

start = log
node.type = xsd:string  {minLength = "40" maxLength = "40"}

log = element log { logentry+ }
logentry = element logentry {
    logentry.attlist,
    branch*, tag*, hgparent*,
    author, date,
    msg, paths?, copies?, extra*
}
logentry.attlist =
    attribute revision {xsd:nonNegativeInteger}
  & attribute node {node.type}
branch = element branch { text }
tag = element tag { text }
hgparent = element parent {hgparent.attlist, text}
hgparent.attlist =
    attribute revision {xsd:integer {minInclusive = "-1"} }
  & attribute node {node.type}
author = element author { author.attlist, text }
author.attlist =
    attribute email {text}
date = element date {xsd:dateTime}
msg = element msg {msg.attlist, text}
msg.attlist =
    attribute xml:space {"preserve"}
paths = element paths { path* }
path = element path { path.attlist, text }
path.attlist =
    # Action: (A)dd, (M)odify, (R)emove
    attribute action {"A"|"M"|"R"}
copies = element copies { copy+ }
copy = element copy { copy.attlist, text }
copy.attlist =
    attribute source {text}
extra = element extra {extra.attlist, text}
extra.attlist =
    attribute key {text}