view contrib/xml.rnc @ 46094:224af78021de

windows: continue looking at `%HOME%` for user config files with py3.8+ The `%HOME%` variable is explicitly called out in `hg help config` as a location that is consulted when reading user files, but python stopped looking at it when expanding '~' in py3.8+.[1] Restore that old functionality by copying in the old implementation (and simplifying it to just use bytes). It could be simplfied further, since only '~' is passed, but I'm not sure yet if we need to make this a generic utility function on Windows. There are other uses of `os.path.expanduser()`, but this is the only case I know of that documents `%HOME%` usage. (The reason for removing it was that it typically isn't set, but it actually is set in MSYS and PowerShell, and `%HOME%` and `%USERPROFILE%` are different in MSYS. I could be convinced to just replace all uses with this as a general utility, so we don't have to think too hard about BC.) [1] https://bugs.python.org/issue36264 Differential Revision: https://phab.mercurial-scm.org/D9559
author Matt Harbison <matt_harbison@yahoo.com>
date Wed, 09 Dec 2020 18:21:16 -0500
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}