我想解析svn diff --xml --summarize
的输出;它看起来很简单,但是我需要知道有哪些边缘情况。
摘自SVN书:
$ svn diff --summarize --xml http://svn.red-bean.com/repos/test@r2 \
http://svn.red-bean.com/repos/test
<?xml version="1.0"?>
<diff>
<paths>
<path
props="none"
kind="file"
item="modified">http://svn.red-bean.com/repos/test/sandwich.txt</path>
<path
props="none"
kind="file"
item="deleted">http://svn.red-bean.com/repos/test/burrito.txt</path>
<path
props="none"
kind="dir"
item="added">http://svn.red-bean.com/repos/test/snacks</path>
</paths>
</diff>
是否存在记录该XML模式的地方?
答案 0 :(得分:1)
糟糕-我讲得太早了; --xml
option的链接:
--xml
以XML格式打印输出。输出的XML模式(采用RELAX NG格式)保存在Subversion源树的subversion / svn / schema /目录中。
here,其中包含diff.rnc;截止到今天,它包含:
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
#
# XML RELAX NG schema for Subversion command-line client output
# For "svn diff --summarize --xml"
include "common.rnc"
start = diff
diff = element diff { paths }
paths = element paths { path* }
## A path entry
path = element path { attlist.path, text }
attlist.path &=
## The props of the entry.
attribute props { "none" | "modified" },
## The kind of the entry.
attribute kind { "dir" | "file" },
## The action performed against this path. This terminology
## was chosen for consistency with 'svn status'.
attribute item { "none" | "added" | "modified" | "deleted" }