contrib/xml.rnc
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 10 Feb 2015 16:17:15 -0800
changeset 24121 9d0b6ef92eb2
parent 10161 3acfb69a4729
permissions -rw-r--r--
test-merge-tools: fix flaky test by avoiding debugsetparents debugsetparents is a debug command and does not provide the same guarantees as non-debug commands do. In particular, when the user sets a different parent, any clean files will remain clean in the dirstate even though the new parent might have a different version of the file (so it should appear modified compared to the new parent). Let's instead achieve the same effect by updating to the new parent and reverting the contents back to what they were. This fix can be tested by passing '--config debug.dirstate.delaywrite=2' to the 'hg update' command in the beforemerge().

# 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}