You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/08/10 22:56:05 UTC
svn commit: r984206 [30/35] - in /subversion/branches/ignore-mergeinfo: ./
build/ build/generator/ build/generator/templates/ build/hudson/
build/hudson/jobs/subversion-1.6.x-solaris/
build/hudson/jobs/subversion-1.6.x-ubuntu/ build/hudson/jobs/subvers...
Modified: subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po [UTF-8] (original)
+++ subversion/branches/ignore-mergeinfo/subversion/po/zh_CN.po [UTF-8] Tue Aug 10 20:55:56 2010
@@ -36,6 +36,7 @@
# checkout 检出
# default 默认
# HEAD revision 最新版本
+# Obliteration 灭迹
# overlay 重载
# remove 删除
# rename 改名
@@ -52,11 +53,11 @@
msgid ""
msgstr ""
"Project-Id-Version: subversion 1.7\n"
-"Report-Msgid-Bugs-To: dev@subversion.tigris.org\n"
-"POT-Creation-Date: 2009-12-07 10:09+0800\n"
-"PO-Revision-Date: 2009-12-07 11:22+0800\n"
-"Last-Translator: Subversion Developers <de...@subversion.tigris.org>\n"
-"Language-Team: Simplified Chinese <de...@subversion.tigris.org>\n"
+"Report-Msgid-Bugs-To: dev@subversion.apache.org\n"
+"POT-Creation-Date: 2010-04-13 23:07+0800\n"
+"PO-Revision-Date: 2010-04-13 23:07+0800\n"
+"Last-Translator: Subversion Developers <de...@subversion.apache.org>\n"
+"Language-Team: Simplified Chinese <de...@subversion.apache.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -221,6 +222,9 @@ msgstr "无法识别的流数据"
msgid "Stream doesn't support resetting"
msgstr "流不支持重置操作"
+msgid "Stream doesn't support seeking"
+msgstr "流不支持定位操作"
+
msgid "Unknown svn_node_kind"
msgstr "未知的 svn_node_kind"
@@ -933,6 +937,10 @@ msgstr "“%s” 尚未纳入版本控� msgid "'%s' refers to a directory"
msgstr "“%s” 引用一个目录"
+#, c-format
+msgid "'%s' has no base revision until it is committed"
+msgstr "在提交之前,“%s”没有基础版本"
+
msgid "(local)"
msgstr "(本地)"
@@ -1004,7 +1012,7 @@ msgstr "执行 post-commit 出错 (细� msgid "Error in post-commit clean-up (details follow):"
msgstr "清理 post-commit 出错 (细节如下): "
-msgid "Are all the targets part of the same working copy?"
+msgid "Are all targets part of the same working copy?"
msgstr "是否所有目标都属于同一工作副本?"
msgid ""
@@ -1095,10 +1103,9 @@ msgstr "路径 “%s” 不是目录"
msgid "Path '%s' already exists, but is not a directory"
msgstr "路径 “%s” 已经存在,但不是目录"
-#, c-format
msgid ""
-"Source and dest appear not to be in the same repository (src: '%s'; dst: '%s')"
-msgstr "来源与目标似乎不在同一版本库 (来源: “%s”;目的: “%s”)"
+"Source and destination URLs appear not to all point to the same repository."
+msgstr "来源与目标似乎不在同一版本库。"
#, c-format
msgid "Cannot move URL '%s' into itself"
@@ -1113,14 +1120,6 @@ msgid "Source URL '%s' is from foreign r
msgstr "源 URL “%s” 来自其它版本库;把它当作脱离的工作副本"
#, c-format
-msgid "Path '%s' not found in revision %ld"
-msgstr "路径 “%s” 不在版本 %ld 中"
-
-#, c-format
-msgid "Path '%s' not found in head revision"
-msgstr "HEAD 版本中找不到路径 “%s”"
-
-#, c-format
msgid "'%s' is already under version control"
msgstr "“%s”已纳入版本控制"
@@ -1128,6 +1127,14 @@ msgstr "“%s”已纳入版本控制"
msgid "Entry for '%s' exists (though the working file is missing)"
msgstr "“%s” 的入口存在(尽管丢失了工作文件)"
+#, c-format
+msgid "Path '%s' not found in revision %ld"
+msgstr "路径 “%s” 不在版本 %ld 中"
+
+#, c-format
+msgid "Path '%s' not found in head revision"
+msgstr "HEAD 版本中找不到路径 “%s”"
+
msgid "Cannot mix repository and working copy sources"
msgstr "不能在源中混合版本库和工作副本"
@@ -1425,10 +1432,6 @@ msgid "Cannot reintegrate into mixed-rev
msgstr "不能复兴到有混合版本的工作副本;请先更新"
#, c-format
-msgid "At least one revision (r%ld) not yet merged from '%s'"
-msgstr "至少有一个版本(r%ld)没有自“%s”合并"
-
-#, c-format
msgid "'%s@%ld' must be ancestrally related to '%s@%ld'"
msgstr "“%s@%ld”必须与“%s@%ld”有祖先关系"
@@ -1721,10 +1724,13 @@ msgid "Missing required node revision ID
msgstr "缺少必须的节点版本 ID"
msgid "Invalid change ordering: new node revision ID without delete"
-msgstr "无效的改变顺序: 有新的节点版本 ID 而没删除"
+msgstr "无效的改变顺序: 没有删除新节点版本 ID"
msgid "Invalid change ordering: non-add change on deleted path"
-msgstr "无效的改变顺序: 对删除路径进行非增加的改变"
+msgstr "无效的改变顺序: 在已经删除的路径执行非增加修改"
+
+msgid "Invalid change ordering: add change on preexisting path"
+msgstr "无效的改变顺序: 在已有路径增加修改"
msgid "creating cursor for reading changes"
msgstr "正在为读取修改创建指针"
@@ -1750,10 +1756,10 @@ msgid "storing checksum-reps record"
msgstr "正在存储校验和展现记录"
msgid "allocating new representation reuse ID (getting 'next-key')"
-msgstr "正在分配新展现的复用 ID(正在获取 “next-key”)"
+msgstr "正在分配新展现的复用 ID (正在获取 “next-key”)"
-msgid "bumping next copy key"
-msgstr "正在提取下一个副本键"
+msgid "bumping next representation reuse ID"
+msgstr "跳到下个展现复用 ID"
msgid "storing copy record"
msgstr "正在存储副本记录"
@@ -1761,6 +1767,9 @@ msgstr "正在存储副本记录"
msgid "allocating new copy ID (getting 'next-key')"
msgstr "正在分配新副本 ID(正在获取 “next-key”)"
+msgid "bumping next copy key"
+msgstr "正在提取下一个副本键"
+
msgid "deleting entry from 'copies' table"
msgstr "正在从 “copies” 表中删除条目"
@@ -1845,13 +1854,16 @@ msgstr "损坏的数据库: 初始的副
msgid "Corrupt DB: initial revision number is not '0' in filesystem '%s'"
msgstr "损坏的数据库: 初始的版本号在文件系统“%s”中不是“0”"
-msgid "Attempted to create entry in non-directory parent"
-msgstr "试图在非目录的父节点创建条目"
+msgid "Attempted to get entries of a non-directory node"
+msgstr "试图从非目录节点中获取条目"
#, c-format
msgid "Attempted to create a node with an illegal name '%s'"
msgstr "试图用非法的名字“%s”创建节点"
+msgid "Attempted to create entry in non-directory parent"
+msgstr "试图在非目录的父节点创建条目"
+
#, c-format
msgid "Attempted to clone child of non-mutable node"
msgstr "试图克隆非可变节点的子节点"
@@ -2130,6 +2142,10 @@ msgid "Failed to calculate MD5 digest fo
msgstr "计算“%s”的MD5摘要失败"
#, c-format
+msgid "Attempt to obliterate '%s' using itself "
+msgstr "试图用自己灭迹“%s”"
+
+#, c-format
msgid "Transaction is not dead: '%s'"
msgstr "事务未结束: “%s”"
@@ -2173,6 +2189,10 @@ msgstr "事务 “%s” 过时,对于� msgid "Cannot deltify revisions prior to r%ld"
msgstr "不能在 r%ld 之前计算增量变化"
+#, c-format
+msgid "Cannot obliterate '%s' as it is not a file"
+msgstr "“%s”不是文件,所以不能灭迹"
+
msgid "The root directory cannot be deleted"
msgstr "不能删除根目录"
@@ -2465,6 +2485,9 @@ msgstr "无法修改“%s”的存取权
msgid "Transaction out of date"
msgstr "事务过时"
+msgid "Obliteration of already-packed revision is not supported"
+msgstr "不支持对已经打包的版本执行灭迹"
+
msgid "Recovery encountered a non-directory node"
msgstr "修复时遇到非目录节点"
@@ -2586,6 +2609,9 @@ msgstr "“%s” 不是会话 URL “%s� msgid "'%s' isn't a child of repository root URL '%s'"
msgstr "“%s” 不是版本库根 URL “%s” 的子节点"
+msgid "Obliterate is not supported by this Repository Access method"
+msgstr "此版本库存取方法不支持灭迹"
+
#, c-format
msgid " - handles '%s' scheme\n"
msgstr " - 处理“%s”方案\n"
@@ -2670,6 +2696,9 @@ msgstr "无法保存文件"
msgid "Server response missing the expected deadprop-count property"
msgstr "服务器响应丢失了期望的 deadprop-count 属性"
+msgid "The OPTIONS response did not include the youngest revision"
+msgstr "OPTIONS 响应中没有包含最新的版本"
+
msgid ""
"DAV request failed; it's possible that the repository's pre-revprop-change "
"hook either failed or is non-existent"
@@ -3064,9 +3093,6 @@ msgid ""
"value"
msgstr "OPTIONS 响应中没有包含请求的 activity-collection-set 值。"
-msgid "The OPTIONS response did not include the requested checked-in value"
-msgstr "OPTIONS 响应中没有包含请求的 checked-in 值。"
-
#, c-format
msgid "Adding a directory failed: %s on %s (%d %s)"
msgstr "增加目录失败: “%s” 于 “%s”(%d %s)"
@@ -3082,8 +3108,8 @@ msgstr "版本库的 URL 非法"
msgid "Unlock request failed: %d %s"
msgstr "解锁请求失败: %d %s"
-msgid "The OPTIONS response did not include the youngest revision"
-msgstr "OPTIONS 响应中没有包含最新的版本"
+msgid "The OPTIONS response did not include the requested checked-in value"
+msgstr "OPTIONS 响应中没有包含请求的 checked-in 值。"
msgid ""
"The OPTIONS response did not include the requested baseline-collection value"
@@ -3192,6 +3218,13 @@ msgstr "子进程错误: %s"
msgid "Can't create tunnel"
msgstr "无法创建隧道"
+msgid ""
+"To better debug SSH connection problems, remove the -q option from 'ssh' in "
+"the [tunnels] section of your Subversion configuration file."
+msgstr ""
+"为了更好的诊断 SSH 连接问题,请在你的 Subversion 配置文件中的 [tunnels] 段,"
+"从 'ssh' 行删除选项 '-q'。"
+
#, c-format
msgid "Illegal svn repository URL '%s'"
msgstr "非法的svn版本库URL“%s”"
@@ -3427,6 +3460,14 @@ msgid ""
msgstr "无效编辑器定位;至少一个输入路径不是目录,并且没有源入口"
#, c-format
+msgid "* Dumped revision %ld.\n"
+msgstr "* 已转存版本 %ld。\n"
+
+#, c-format
+msgid "* Verified revision %ld.\n"
+msgstr "* 已校验版本 %ld。\n"
+
+#, c-format
msgid ""
"WARNING: Referencing data in revision %ld, which is older than the oldest\n"
"WARNING: dumped revision (%ld). Loading this dump into an empty repository\n"
@@ -3445,14 +3486,6 @@ msgid "End revision %ld is invalid (youn
msgstr "结束版本 %ld 无效 (最新版本是 %ld)"
#, c-format
-msgid "* Dumped revision %ld.\n"
-msgstr "* 已转存版本 %ld。\n"
-
-#, c-format
-msgid "* Verified revision %ld.\n"
-msgstr "* 已校验版本 %ld。\n"
-
-#, c-format
msgid "Unexpected node kind %d for '%s'"
msgstr "意外发现节点种类 %d 于“%s”"
@@ -4080,18 +4113,10 @@ msgid "Can't remove file '%s'"
msgstr "不能移动文件“%s”"
#, c-format
-msgid "Can't open directory '%s'"
-msgstr "无法打开目录“%s”"
-
-#, c-format
msgid "Can't remove '%s'"
msgstr "无法删除“%s”"
#, c-format
-msgid "Can't rewind directory '%s'"
-msgstr "无法重绕目录“%s”"
-
-#, c-format
msgid "Can't create process '%s' attributes"
msgstr "无法创建进程“%s”的属性"
@@ -4233,6 +4258,10 @@ msgid "Can't hide directory '%s'"
msgstr "无法隐藏目录 “%s”"
#, c-format
+msgid "Can't open directory '%s'"
+msgstr "无法打开目录“%s”"
+
+#, c-format
msgid "Can't remove directory '%s'"
msgstr "无法删除目录 “%s”"
@@ -4283,6 +4312,10 @@ msgid "Invalid character '%c' found in r
msgstr "在版本列表中发现无效字符 “%c”"
#, c-format
+msgid "Invalid revision number '0' found in range list"
+msgstr "在范围列表中发现无效的版本号 “0”"
+
+#, c-format
msgid "Unable to parse reversed revision range '%ld-%ld'"
msgstr "不能解析反向的版本范围 “%ld - %ld”"
@@ -4383,13 +4416,13 @@ msgstr ""
"\n"
msgid ""
-"Copyright (C) 2009 The Apache Software Foundation.\n"
+"Copyright (C) 2010 The Apache Software Foundation.\n"
"This software consists of contributions made by many people;\n"
"see the NOTICE file for more information.\n"
"Subversion is open source software, see http://subversion.apache.org/\n"
"\n"
msgstr ""
-"版权所有 (C) 2009 Apache 软件基金会。\n"
+"版权所有 (C) 2010 Apache 软件基金会。\n"
"此软件包含了许多人的贡献;请查看文件 NOTICE 以获得更多信息。\n"
"Subversion 是开放源代码软件,请参阅 http://subversion.apache.org/ 站点。\n"
"\n"
@@ -4678,11 +4711,6 @@ msgstr "当为提交操作准备“%s”
msgid "'%s' is not a valid administrative directory name"
msgstr "“%s”不是一个有效的管理目录名"
-msgid ""
-"Your .svn/tmp directory may be missing or corrupt; run 'svn cleanup' and try "
-"again"
-msgstr "你的 .svn/tmp 目录可能丢失或损坏;请执行“svn cleanup”,然后重试"
-
#, c-format
msgid "Revision %ld doesn't match existing revision %ld in '%s'"
msgstr "版本 %ld 不匹配现有版本 %ld 于 “%s”"
@@ -4752,6 +4780,21 @@ msgid "Cannot revert '%s': unsupported n
msgstr "无法恢复“%s”: 工作副本中有不支持的节点种类"
#, c-format
+msgid "Can only get the pristine contents of files; '%s' is not a file"
+msgstr "只能取得文件的原始内容;“%s”不是文件"
+
+#, c-format
+msgid ""
+"Cannot get the pristine contents of '%s' because its delete is already "
+"committed"
+msgstr "不能取得“%s”的原始内容,因为其删除操作已经提交"
+
+#, c-format
+msgid ""
+"Cannot get the pristine contents of '%s' because it has an unexpected status"
+msgstr "不能取得“%s”的原始内容,因为其状态未知"
+
+#, c-format
msgid "File '%s' has local modifications"
msgstr "文件“%s”有本地修改"
@@ -4819,13 +4862,13 @@ msgstr "不能排除 '%s': 它将要从� msgid "Can only crop a working copy with a restrictive depth"
msgstr "只能修剪工作副本到有限深度"
+msgid "Can only crop directories"
+msgstr "只能修剪目录"
+
#, c-format
msgid "The node '%s' was not found."
msgstr "找不到节点 '%s'。"
-msgid "Can only crop directories"
-msgstr "只能修剪目录"
-
#, c-format
msgid ""
"Cannot crop '%s': it is going to be removed from repository. Try commit "
@@ -4923,9 +4966,8 @@ msgstr "工作副本“%s”未被锁定
msgid "No write-lock in '%s'"
msgstr "“%s”没有写入锁定"
-msgid "Can't move source to dest"
-msgstr "无法移动源至目的"
-
+#. For log debugging. Generates output about its operation.
+#. #define DEBUG_LOG
#. Helper macro for erroring out while running a logfile.
#.
#. This is implemented as a macro so that the error created has a useful
@@ -4934,9 +4976,8 @@ msgstr "无法移动源至目的"
msgid "In directory '%s'"
msgstr "在目录“%s”中"
-#, c-format
-msgid "Missing 'dest' attribute in '%s'"
-msgstr "“%s”丢失了“dest”属性"
+msgid "Can't move source to dest"
+msgstr "无法移动源至目的"
#, c-format
msgid "Missing 'timestamp' attribute in '%s'"
@@ -4963,10 +5004,6 @@ msgid "Error recording tree conflict on
msgstr "在 '%s' 中记录树冲突出错"
#, c-format
-msgid "Log entry missing 'name' attribute (entry '%s' for directory '%s')"
-msgstr "日志项丢失 “name” 属性 (入口 “%s” 对应目录 “%s”)"
-
-#, c-format
msgid "Unrecognized logfile element '%s' in '%s'"
msgstr "有无法识别的日志文件元素 “%s” 在 “%s” 中"
@@ -5163,6 +5200,10 @@ msgid "Unrecognized line ending style fo
msgstr "“%s” 含有无法识别的行结束样式"
#, c-format
+msgid "Cannot set non-inheritable mergeinfo on a non-directory ('%s')"
+msgstr "无法在非目录对象(“%s”)设定不可继承的合并信息"
+
+#, c-format
msgid "Error parsing %s property on '%s': '%s'"
msgstr "解析 %s 属性于“%s”出错: “%s”"
@@ -5192,11 +5233,11 @@ msgstr "无效属性 %s 位于 “%s”:
#, c-format
msgid ""
-"Checksum mismatch indicates corrupt text base: '%s':\n"
+"Checksum mismatch indicates corrupt text base for file: '%s':\n"
" expected: %s\n"
" actual: %s\n"
msgstr ""
-"校验和不一致,指示文件参考基础损坏: '%s':\n"
+"校验和不一致,指示文件“%s”的参考基础损坏:\n"
" 期望: %s\n"
" 实际: %s\n"
@@ -5247,6 +5288,10 @@ msgid "Path '%s' is not in the working c
msgstr "路径 “%s” 不在工作副本中"
#, c-format
+msgid "Failed to add directory '%s': copyfrom arguments not yet supported"
+msgstr "无法增加目录“%s”:尚不支持 copyfrom 参数"
+
+#, c-format
msgid ""
"Failed to add directory '%s': object of the same name as the administrative "
"directory"
@@ -5274,10 +5319,6 @@ msgstr "增加目录 '%s' 失败: 同名
msgid "Switched directory '%s' does not match expected URL '%s'"
msgstr "已经切换的目录 '%s' 与期望的 URL '%s' 不匹配"
-#, c-format
-msgid "Failed to add directory '%s': copyfrom arguments not yet supported"
-msgstr "无法增加目录“%s”:尚不支持 copyfrom 参数"
-
msgid "Couldn't do property merge"
msgstr "无法进行属性合并"
@@ -5332,7 +5373,23 @@ msgstr "Copyfrom-url“%s”与“%s”�
#, c-format
msgid "Missing end of line in wcprops file for '%s'"
-msgstr "wcprops文件“%s”丢失了行结束符"
+msgstr "“%s”的 wcprops 文件丢失了行结束符"
+
+#, c-format
+msgid ""
+"Working copy '%s' can't be upgraded because the repository root is not "
+"available and can't be retrieved"
+msgstr "由于版本库的根不可用,并且不能找回,所以工作副本“%s”不能被升级"
+
+#, c-format
+msgid ""
+"Working copy '%s' can't be upgraded because the repository uuid is not "
+"available and can't be retrieved"
+msgstr "由于版本库的 UUID 不可用,并且不能找回,所以工作副本“%s”不能被升级"
+
+#, c-format
+msgid "Working copy '%s' can't be upgraded because it doesn't have a url"
+msgstr "由于没有 URL,所以工作副本“%s”不能被升级"
msgid ""
"Cannot upgrade with existing logs; please run 'svn cleanup' with Subversion "
@@ -5349,10 +5406,6 @@ msgstr "“%s”不是目录"
msgid "Unable to make any directories"
msgstr "无法创建任何目录"
-#, c-format
-msgid "Cannot find a URL for '%s'"
-msgstr "不能为“%s”找到 URL"
-
#. Verify the checksum kind for pristine storage.
msgid "Only SHA1 checksums can be used as keys in the pristine file storage.\n"
msgstr "在原始的文件存储中,只有 SHA1 校验和才能用作键。\n"
@@ -5408,6 +5461,10 @@ msgid "Corrupt data for '%s'"
msgstr "'%s' 的数据损坏"
#, c-format
+msgid "Could not find node '%s' for recording file information."
+msgstr "不能为记录文件信息找到节点“%s”"
+
+#, c-format
msgid "Expected node '%s' to be added."
msgstr "期望节点“%s”被增加。"
@@ -5424,6 +5481,18 @@ msgid "There is no work queue for '%s'."
msgstr "没有 '%s' 的工作队列。"
#, c-format
+msgid "'%s' has no WORKING_NODE"
+msgstr "“%s” 没有 WORKING_NODE"
+
+#, c-format
+msgid "'%s' has no BASE_NODE"
+msgstr "“%s” 没有 BASE_NODE"
+
+#, c-format
+msgid "The pristine text with checksum '%s' was not found"
+msgstr "找不到校验和为“%s”的原始内容"
+
+#, c-format
msgid "Error restoring text for '%s'"
msgstr "还原 “%s” 文本出错"
@@ -5739,10 +5808,10 @@ msgstr ""
msgid ""
"Subversion is a tool for version control.\n"
-"For additional information, see http://subversion.tigris.org/\n"
+"For additional information, see http://subversion.apache.org/\n"
msgstr ""
"Subversion 是版本控制工具。\n"
-"欲取得详细资料,请参阅 http://subversion.tigris.org/\n"
+"欲取得详细资料,请参阅 http://subversion.apache.org/\n"
msgid ""
"The following repository access (RA) modules are available:\n"
@@ -6038,8 +6107,12 @@ msgstr "从文件ARG读取日志信息"
msgid "give output suitable for concatenation"
msgstr "给予适合串联的输出"
-msgid "treat value as being in charset encoding ARG"
-msgstr "将ARG的值视为字符编码"
+msgid ""
+"treat value as being in charset encoding ARG\n"
+" [alias: --enc]"
+msgstr ""
+"认为取值使用字符集编码 ARG\n"
+" [alias: --enc]"
msgid "show program version information"
msgstr "显示程序版本信息"
@@ -6101,10 +6174,12 @@ msgstr "受深度参数 ARG(“empty”�
msgid ""
"set new working copy depth to ARG ('exclude',\n"
-" 'empty', 'files', 'immediates', or 'infinity')"
+" 'empty', 'files', 'immediates', or 'infinity')\n"
+" [alias: --sd]"
msgstr ""
-"设置工作副本的新深度为 ARG(“exclude”,“empty”,“files”,“immediates”,\n"
-" 或“infinity”)"
+"设置工作副本的新深度为 ARG(“exclude”,\n"
+" “empty”,“files”,“immediates” 或“infinity”)\n"
+" [alias: --sd]"
msgid "output in XML"
msgstr "输出为 XML"
@@ -6112,14 +6187,22 @@ msgstr "输出为 XML"
msgid "use strict semantics"
msgstr "使用严格的语法"
-msgid "do not cross copies while traversing history"
-msgstr "查看历史不要跨越不同的副本"
+msgid ""
+"do not cross copies while traversing history\n"
+" [alias: --soc]"
+msgstr ""
+"在复制时停止遍历历史\n"
+" [alias: --soc]"
msgid "disregard default and svn:ignore property ignores"
msgstr "忽略默认值和 svn:ignore 属性"
-msgid "do not cache authentication tokens"
-msgstr "不要缓存用户认证令牌"
+msgid ""
+"do not cache authentication tokens\n"
+" [alias: --nac]"
+msgstr ""
+"不要缓存认证令牌\n"
+" [alias: --nac]"
msgid ""
"accept unknown SSL server certificates without\n"
@@ -6129,24 +6212,40 @@ msgstr "不提示的接受未知的 SSL
msgid "do no interactive prompting"
msgstr "不要交互提示"
-msgid "try operation but make no changes"
-msgstr "尝试操作但没有修改"
+msgid ""
+"try operation but make no changes\n"
+" [alias: --dry]"
+msgstr ""
+"尝试操作,但是不要执行改变\n"
+" [alias: --dry]"
-msgid "do not print differences for deleted files"
-msgstr "不要输出删除文件造成的差异"
+msgid ""
+"do not print differences for deleted files\n"
+" [alias: --ndd]"
+msgstr ""
+"对于已经删除的文件,不要显示差异\n"
+" [alias: --ndd]"
-msgid "notice ancestry when calculating differences"
-msgstr "比较差异时提示原始信息"
+msgid ""
+"notice ancestry when calculating differences\n"
+" [alias: --na]"
+msgstr ""
+"计算差异时关注祖先\n"
+" [alias: --na]"
-msgid "ignore ancestry when calculating merges"
-msgstr "合并时忽略原始信息"
+msgid ""
+"ignore ancestry when calculating merges\n"
+" [alias: --ia]"
+msgstr ""
+"计算合并时忽略祖先\n"
+" [alias: --ia]"
msgid ""
"ignore externals definitions\n"
-" [aliases: --ie]"
+" [alias: --ie]"
msgstr ""
"忽略外部定义\n"
-" [aliases: --ie]"
+" [alias: --ie]"
msgid "use ARG as diff command"
msgstr "使用 ARG 作为比较命令"
@@ -6157,8 +6256,12 @@ msgstr "使用 ARG 作为合并命令"
msgid "use ARG as external editor"
msgstr "使用 ARG 作为外部编辑器"
-msgid "merge only mergeinfo differences"
-msgstr "只合并 mergeinfo 的差异"
+msgid ""
+"merge only mergeinfo differences\n"
+" [alias: --ro]"
+msgstr ""
+"只合并修改信息的差异\n"
+" [alias: --ro]"
msgid "use ARG as the older target"
msgstr "使用 ARG 作为旧目标"
@@ -6172,8 +6275,12 @@ msgstr "在版本属性上操作(使用-
msgid "relocate via URL-rewriting"
msgstr "通过URL改写重新定位"
-msgid "read user configuration files from directory ARG"
-msgstr "从目录 ARG 读取用户配置文件"
+msgid ""
+"read user configuration files from directory ARG\n"
+" [alias: --cd]"
+msgstr ""
+"从目录 ARG 读取用户配置文件\n"
+" [alias: --cd]"
msgid ""
"set user configuration option in the format:\n"
@@ -6214,9 +6321,10 @@ msgstr "显示结果的概要"
msgid "remove changelist association"
msgstr "删除修改列表耦合"
+#, fuzzy
msgid ""
"operate only on members of changelist ARG\n"
-" [aliases: --cl]"
+" [alias: --cl]"
msgstr ""
"只能对修改列表 ARG 成员操作\n"
" [aliases: --cl]"
@@ -6224,8 +6332,13 @@ msgstr ""
msgid "don't delete changelists after commit"
msgstr "不要在提交后删除修改列表"
-msgid "keep path in working copy"
-msgstr "在工作副本中保留路径"
+#, fuzzy
+msgid ""
+"keep path in working copy\n"
+" [alias: --kl]"
+msgstr ""
+"忽略外部定义\n"
+" [aliases: --ie]"
msgid "retrieve all revision properties"
msgstr "获取所有版本属性"
@@ -6259,15 +6372,22 @@ msgstr ""
" 'theirs-conflict', 'mine-full', 'theirs-full',\n"
" 'edit', 'launch')"
+#, fuzzy
msgid ""
"specify which collection of revisions to display\n"
-" ('merged', 'eligible')"
+" ('merged', 'eligible')\n"
+" [alias: --sr]"
msgstr ""
"指定显示哪个版本集合\n"
" ('merged', 'eligible')"
-msgid "lump-merge all of source URL's unmerged changes"
-msgstr "批量合并所有源 URL 中未合并的修改"
+#, fuzzy
+msgid ""
+"lump-merge all of source URL's unmerged changes\n"
+" [alias: --ri]"
+msgstr ""
+"只能对修改列表 ARG 成员操作\n"
+" [aliases: --cl]"
msgid ""
"number of leading path components to strip\n"
@@ -6283,9 +6403,50 @@ msgstr ""
"html\n"
" 被转换为 fudge/crunchy.html。指定 -p2 会得到 crunchy.html 。"
-msgid "don't diff copied or moved files with their source"
+#, fuzzy
+msgid ""
+"don't diff copied or moved files with their source\n"
+" [alias: --sca]"
msgstr "请不要将复制或移动的文件与其源文件比较"
+#, fuzzy
+msgid ""
+"don't expand keywords\n"
+" [alias: --ik]"
+msgstr ""
+"忽略外部定义\n"
+" [aliases: --ie]"
+
+#, fuzzy
+msgid ""
+"apply the unidiff in reverse\n"
+" [alias: --rd]"
+msgstr ""
+"忽略外部定义\n"
+" [aliases: --ie]"
+
+msgid ""
+"operate only on targets matching ARG,\n"
+" which may be a glob pattern such as '*.txt'.\n"
+" If this option is specified multiple times,\n"
+" all patterns are matched in turn.\n"
+" If both --include-pattern and --exclude-pattern\n"
+" options are specified include patterns are "
+"applied\n"
+" first, i.e. exclude patterns are applied to all\n"
+" targets which match an include pattern.\n"
+" [alias: --ip]"
+msgstr ""
+
+msgid ""
+"do not operate on targets matching ARG,\n"
+" which may be a glob pattern such as '*.txt'.\n"
+" If this option is specified multiple times,\n"
+" all patterns are matched in turn.\n"
+" See also the --include-pattern option.\n"
+" [alias: --ep]"
+msgstr ""
+
msgid ""
"Put files and directories under version control, scheduling\n"
"them for addition to repository. They will be added in next commit.\n"
@@ -6885,17 +7046,21 @@ msgid ""
"Apply a patch to a working copy.\n"
"usage: patch PATCHFILE [WCPATH]\n"
"\n"
-" Apply unidiff content in PATCHFILE to the working copy WCPATH.\n"
+" Apply a unidiff patch in PATCHFILE to the working copy WCPATH.\n"
" If WCPATH is omitted, '.' is assumed.\n"
-" A unidiff file suitable for application to a working copy can be\n"
+"\n"
+" A unidiff patch suitable for application to a working copy can be\n"
" produced with the 'svn diff' command or third-party diffing tools.\n"
" Any non-unidiff content of PATCHFILE is ignored.\n"
"\n"
+" Changes listed in the patch will either be applied or rejected.\n"
" If a change does not match at its exact line offset, it may be applied\n"
" earlier or later in the file if a match is found elsewhere for the\n"
-" surrounding lines of context provided in the unidiff.\n"
-" If no matching context can be found for a change, the change will\n"
-" produce a text conflict at its exact line offset.\n"
+" surrounding lines of context provided by the patch.\n"
+" A change may also be applied with fuzz, which means that one\n"
+" or more lines of context are ignored when matching the change.\n"
+" If no matching context can be found for a change, the change conflicts\n"
+" and will be written to a reject file with the extension .svnpatch.rej.\n"
"\n"
" For each patched file a line will be printed with characters reporting\n"
" the action taken. These characters have the following meaning:\n"
@@ -6904,10 +7069,13 @@ msgid ""
" D Deleted\n"
" U Updated\n"
" C Conflict\n"
-" G Merged\n"
+" G Merged (with local uncommitted changes)\n"
+"\n"
+" Changes applied with an offset or fuzz are reported on lines starting\n"
+" with the '>' symbol. You should review such changes carefully.\n"
"\n"
-" If a unidiff removes all content from a file, that file is scheduled\n"
-" for deletion. If a unidiff creates a new file, that file is scheduled\n"
+" If the patch removes all content from a file, that file is scheduled\n"
+" for deletion. If the patch creates a new file, that file is scheduled\n"
" for addition. Use 'svn revert' to undo deletions and additions you\n"
" do not agree with.\n"
msgstr ""
@@ -7575,9 +7743,6 @@ msgid ""
"and -r"
msgstr "遇到了多个版本参数;不能指定 -c 两次或者同时使用 -c 和 -r"
-msgid "-r and -c can't be used with --reintegrate"
-msgstr "-r 和 -c 不能与 --reintegrate 共存"
-
msgid "--depth and --set-depth are mutually exclusive"
msgstr "--depth 与 --set-depth 是互斥的"
@@ -7633,6 +7798,9 @@ msgid ""
"svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)\n"
msgstr "svn: 运行“svn cleanup”删除锁定 (输入“svn help cleanup”得到用法)\n"
+msgid "-r and -c can't be used with --reintegrate"
+msgstr "-r 和 -c 不能与 --reintegrate 共存"
+
msgid "Merge source required"
msgstr "需要合并源"
@@ -7663,9 +7831,6 @@ msgstr "尝试用 “svn add”或 “sv
msgid "Try 'svn mkdir --parents' instead?"
msgstr "尝试 “svn mkdir --parents”?"
-msgid "Summary of conflicts in external item:\n"
-msgstr "外部条目冲突概要:\n"
-
msgid "Summary of conflicts:\n"
msgstr "冲突概要:\n"
@@ -7714,6 +7879,18 @@ msgid "Resolved conflicted state of '%s'
msgstr "“%s”的冲突状态已解决\n"
#, c-format
+msgid "> applied hunk @@ -%lu,%lu +%lu,%lu @@ with offset %s"
+msgstr "> 应用的块 @@ -%lu,%lu +%lu,%lu @@ 偏移 %s"
+
+#, c-format
+msgid "> applied hunk @@ -%lu,%lu +%lu,%lu @@ with fuzz %d\n"
+msgstr "> 应用的块 @@ -%lu,%lu +%lu,%lu @@ 模糊 %d\n"
+
+#, c-format
+msgid "> rejected hunk @@ -%lu,%lu +%lu,%lu @@\n"
+msgstr "> 拒绝的块 @@ -%lu,%lu +%lu,%lu @@\n"
+
+#, c-format
msgid ""
"\n"
"Fetching external item into '%s'\n"
@@ -7853,6 +8030,31 @@ msgstr "--- 正在合并 r%ld,经由 r
msgid "--- Reverse-merging r%ld through r%ld into '%s':\n"
msgstr "--- 正在反向合并 r%ld,经由 r%ld,到 “%s”:\n"
+#, fuzzy, c-format
+msgid "--- Recording mergeinfo for merge between repository URLs into '%s':\n"
+msgstr "--- 正在合并版本库 URL 之间的差异到 “%s”:\n"
+
+#, fuzzy, c-format
+msgid "--- Recording mergeinfo for merge of r%ld into '%s':\n"
+msgstr "--- 正在反向合并 r%ld 到 “%s”:\n"
+
+#, fuzzy, c-format
+msgid "--- Recording mergeinfo for reverse merge of r%ld into '%s':\n"
+msgstr "--- 正在反向合并(从外部版本库) r%ld 到 “%s”:\n"
+
+#, fuzzy, c-format
+msgid "--- Recording mergeinfo for merge of r%ld through r%ld into '%s':\n"
+msgstr "--- 正在反向合并 r%ld,经由 r%ld,到 “%s”:\n"
+
+#, fuzzy, c-format
+msgid ""
+"--- Recording mergeinfo for reverse merge of r%ld through r%ld into '%s':\n"
+msgstr "--- 正在反向合并 r%ld,经由 r%ld,到 “%s”:\n"
+
+#, fuzzy, c-format
+msgid "--- Eliding mergeinfo from '%s':\n"
+msgstr "--- 正在合并 r%ld 到 “%s”:\n"
+
#, c-format
msgid "--- Merging differences between foreign repository URLs into '%s':\n"
msgstr "--- 正在合并外部版本库 URL 之间的差异到 “%s”:\n"
@@ -7894,6 +8096,10 @@ msgstr "删除属性 “%s” 于版本� msgid "Upgraded '%s'.\n"
msgstr "已升级的“%s”。\n"
+#, c-format
+msgid "Obliterate %8ld %s\n"
+msgstr "灭迹 %8ld %s\n"
+
msgid "Wrong number of arguments"
msgstr "参数数目错误"
@@ -8205,6 +8411,9 @@ msgstr "在提交事务时禁用fsync [B
msgid "disable automatic log file removal [Berkeley DB]"
msgstr "禁用自动删除日志文件 [BDB]"
+msgid "read user configuration files from directory ARG"
+msgstr "从目录 ARG 读取用户配置文件"
+
msgid ""
"remove redundant Berkeley DB log files\n"
" from source repository [Berkeley DB]"
@@ -8242,6 +8451,12 @@ msgid ""
" earlier than 1.6"
msgstr "使用与 1.6 之前版本兼容的格式"
+#, fuzzy
+msgid ""
+"use format compatible with Subversion versions\n"
+" earlier than 1.7"
+msgstr "使用与1.4之前版本兼容的格式"
+
msgid ""
"usage: svnadmin crashtest REPOS_PATH\n"
"\n"
@@ -8779,7 +8994,7 @@ msgstr "排除前缀: \n"
#, c-format
msgid "Including (and dropping empty revisions for) prefixes:\n"
-msgstr "包含(以及丢弃空版本)的前缀: \n"
+msgstr "包含 (以及丢弃空版本) 的前缀: \n"
#, c-format
msgid "Including prefixes:\n"
@@ -8858,6 +9073,9 @@ msgstr "历史项最大数量"
msgid "do not print differences for added files"
msgstr "不要输出增加文件造成的差异"
+msgid "do not print differences for deleted files"
+msgstr "不要输出删除文件造成的差异"
+
msgid "operate on single directory only"
msgstr "只在单个目录操作"
@@ -9278,6 +9496,15 @@ msgstr ""
"监听主机名称或IP地址\n"
" [方式: daemon, listen-once]"
+msgid ""
+"prefer IPv6 when resolving the listen hostname\n"
+" [IPv4 is preferred by default. Using IPv4 and "
+"IPv6\n"
+" at the same time is not supported in daemon "
+"mode.\n"
+" Use inetd mode or tunnel mode if you need this.]"
+msgstr ""
+
#. ### Making the assumption here that WIN32 never has fork and so
#. * ### this option never exists when --service exists.
msgid "use threads instead of fork [mode: daemon]"
@@ -9524,6 +9751,9 @@ msgstr "尽可能少打印"
msgid "allow a non-empty destination repository"
msgstr "允许非空目标版本库"
+msgid "do not cache authentication tokens"
+msgstr "不要缓存用户认证令牌"
+
msgid ""
"specify a username ARG (deprecated;\n"
" see --source-username and --sync-username)"
@@ -9550,6 +9780,13 @@ msgstr "使用用户名称 ARG 连接目
msgid "connect to sync repository with password ARG"
msgstr "使用密码 ARG 连接目的版本库"
+msgid ""
+"Disable built-in locking. Use of this option can\n"
+" corrupt the mirror unless you ensure that no "
+"other\n"
+" instance of svnsync is running concurrently."
+msgstr ""
+
#, c-format
msgid "Can't get local hostname"
msgstr "无法获取本地主机名"
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/cl.h
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/cl.h?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/cl.h (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/cl.h Tue Aug 10 20:55:56 2010
@@ -224,8 +224,10 @@ typedef struct svn_cl__opt_state_t
int strip_count; /* number of leading path components to strip */
svn_boolean_t ignore_keywords; /* do not expand keywords */
svn_boolean_t reverse_diff; /* reverse a diff (e.g. when patching) */
- apr_array_header_t *include_patterns; /* targets to include in operation */
- apr_array_header_t *exclude_patterns; /* targets to exclude from operation */
+ svn_boolean_t ignore_whitespace; /* don't account for whitespace when
+ patching */
+ svn_boolean_t show_diff; /* produce diff output */
+ svn_boolean_t internal_diff; /* override diff_cmd in config file */
svn_boolean_t ignore_mergeinfo; /* ignore mergeinfo in reporting commands. */
} svn_cl__opt_state_t;
@@ -389,7 +391,7 @@ svn_cl__time_cstring_to_human_cstring(co
*/
svn_error_t *
svn_cl__print_status(const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
svn_boolean_t detailed,
svn_boolean_t show_last_committed,
svn_boolean_t skip_unrecognized,
@@ -397,6 +399,7 @@ svn_cl__print_status(const char *path,
unsigned int *text_conflicts,
unsigned int *prop_conflicts,
unsigned int *tree_conflicts,
+ svn_client_ctx_t *ctx,
apr_pool_t *pool);
@@ -404,7 +407,8 @@ svn_cl__print_status(const char *path,
allocations. */
svn_error_t *
svn_cl__print_status_xml(const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
+ svn_client_ctx_t *ctx,
apr_pool_t *pool);
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/diff-cmd.c Tue Aug 10 20:55:56 2010
@@ -83,12 +83,12 @@ kind_to_word(svn_client_diff_summarize_k
* the path the working copy root corresponds to. */
static svn_error_t *
summarize_xml(const svn_client_diff_summarize_t *summary,
- void *baton,
- apr_pool_t *pool)
+ void *baton,
+ apr_pool_t *pool)
{
/* Full path to the object being diffed. This is created by taking the
* baton, and appending the target's relative path. */
- const char *path = baton;
+ const char *path = *(const char **)baton;
svn_stringbuf_t *sb = svn_stringbuf_create("", pool);
/* Tack on the target path, so we can differentiate between different parts
@@ -115,10 +115,10 @@ summarize_xml(const svn_client_diff_summ
* svn_client_diff_summarize_func_t interface. */
static svn_error_t *
summarize_regular(const svn_client_diff_summarize_t *summary,
- void *baton,
- apr_pool_t *pool)
+ void *baton,
+ apr_pool_t *pool)
{
- const char *path = baton;
+ const char *path = *(const char **)baton;
/* Tack on the target path, so we can differentiate between different parts
* of the output when we're given multiple targets. */
@@ -336,8 +336,7 @@ svn_cl__diff(apr_getopt_t *os,
! opt_state->notice_ancestry,
opt_state->ignore_mergeinfo,
opt_state->changelists,
- summarize_func,
- (void *) target1,
+ summarize_func, &target1,
ctx, iterpool));
else
SVN_ERR(svn_client_diff5
@@ -383,8 +382,7 @@ svn_cl__diff(apr_getopt_t *os,
! opt_state->notice_ancestry,
opt_state->ignore_mergeinfo,
opt_state->changelists,
- summarize_func,
- (void *) truepath,
+ summarize_func, &truepath,
ctx, iterpool));
else
SVN_ERR(svn_client_diff_peg5
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/log-cmd.c Tue Aug 10 20:55:56 2010
@@ -35,6 +35,7 @@
#include "svn_time.h"
#include "svn_cmdline.h"
#include "svn_props.h"
+#include "svn_pools.h"
#include "cl.h"
@@ -46,13 +47,21 @@
/* Baton for log_entry_receiver() and log_entry_receiver_xml(). */
struct log_receiver_baton
{
- /* Check for cancellation on each invocation of a log receiver. */
- svn_cancel_func_t cancel_func;
- void *cancel_baton;
+ /* Client context. */
+ svn_client_ctx_t *ctx;
+
+ /* The URL target of the log operation. */
+ const char *target_url;
/* Don't print log message body nor its line count. */
svn_boolean_t omit_log_message;
+ /* Whether to show diffs in the log. */
+ svn_boolean_t show_diff;
+
+ /* Diff arguments received from command line. */
+ const char *diff_extensions;
+
/* Stack which keeps track of merge revision nesting, using svn_revnum_t's */
apr_array_header_t *merge_stack;
@@ -156,8 +165,8 @@ log_entry_receiver(void *baton,
/* Number of lines in the msg. */
int lines;
- if (lb->cancel_func)
- SVN_ERR(lb->cancel_func(lb->cancel_baton));
+ if (lb->ctx->cancel_func)
+ SVN_ERR(lb->ctx->cancel_func(lb->ctx->cancel_baton));
svn_compat_log_revprops_out(&author, &date, &message, log_entry->revprops);
@@ -256,7 +265,116 @@ log_entry_receiver(void *baton,
SVN_ERR(svn_cmdline_printf(pool, "\n%s\n", message));
}
+ /* Print a diff if requested. */
+ if (lb->show_diff)
+ {
+ apr_file_t *outfile;
+ apr_file_t *errfile;
+ apr_array_header_t *diff_options;
+ apr_status_t status;
+ svn_opt_revision_t start_revision;
+ svn_opt_revision_t end_revision;
+ svn_error_t *err;
+
+ if ((status = apr_file_open_stdout(&outfile, pool)))
+ return svn_error_wrap_apr(status, _("Can't open stdout"));
+ if ((status = apr_file_open_stderr(&errfile, pool)))
+ return svn_error_wrap_apr(status, _("Can't open stderr"));
+
+ /* Fall back to "" to get options initialized either way. */
+ {
+ const char *optstr = lb->diff_extensions ? lb->diff_extensions : "";
+ diff_options = svn_cstring_split(optstr, " \t\n\r", TRUE, pool);
+ }
+
+ start_revision.kind = svn_opt_revision_number;
+ start_revision.value.number = log_entry->revision - 1;
+ end_revision.kind = svn_opt_revision_number;
+ end_revision.value.number = log_entry->revision;
+
+ SVN_ERR(svn_cmdline_printf(pool, _("\n")));
+ err = svn_client_diff5(diff_options,
+ lb->target_url,
+ &start_revision,
+ lb->target_url,
+ &end_revision,
+ NULL,
+ svn_depth_infinity,
+ FALSE, /* ignore ancestry */
+ TRUE, /* no diff deleted */
+ FALSE, /* show copies as adds */
+ FALSE, /* ignore content type */
+ FALSE, /* ignore mergeinfo */
+ svn_cmdline_output_encoding(pool),
+ outfile,
+ errfile,
+ NULL,
+ lb->ctx, pool);
+ if (err)
+ {
+ /* We get a "path not found" error in case the revision created
+ * lb->target_url. Try to show a diff from the parent instead. */
+ if (err->apr_err == SVN_ERR_FS_NOT_FOUND)
+ {
+ const char *parent;
+ apr_pool_t *iterpool;
+
+ svn_error_clear(err);
+
+ parent = svn_uri_dirname(lb->target_url, pool);
+ iterpool = svn_pool_create(pool);
+ while (strcmp(parent, lb->target_url) != 0)
+ {
+ svn_pool_clear(iterpool);
+ err = svn_client_diff5(diff_options,
+ parent,
+ &start_revision,
+ parent,
+ &end_revision,
+ NULL,
+ svn_depth_infinity,
+ FALSE, /* ignore ancestry */
+ TRUE, /* no diff deleted */
+ FALSE, /* show copies as adds */
+ FALSE, /* ignore content type */
+ FALSE, /* ignore mergeinfo */
+ svn_cmdline_output_encoding(iterpool),
+ outfile,
+ errfile,
+ NULL,
+ lb->ctx, iterpool);
+ if (err == SVN_NO_ERROR)
+ break;
+ else
+ {
+ if (err->apr_err == SVN_ERR_FS_NOT_FOUND)
+ {
+ svn_error_clear(err);
+ continue;
+ }
+ if (err->apr_err == SVN_ERR_RA_ILLEGAL_URL ||
+ err->apr_err == SVN_ERR_AUTHZ_UNREADABLE ||
+ err->apr_err == SVN_ERR_RA_LOCAL_REPOS_OPEN_FAILED)
+ {
+ svn_error_clear(err);
+ break;
+ }
+ return svn_error_return(err);
+ }
+
+ parent = svn_uri_dirname(parent, pool);
+ }
+ svn_pool_destroy(iterpool);
+ }
+ else
+ return svn_error_return(err);
+ }
+
+ SVN_ERR(svn_cmdline_printf(pool, _("\n")));
+ }
+
SVN_ERR(svn_cmdline_fflush(stdout));
+ SVN_ERR(svn_cmdline_fflush(stderr));
if (log_entry->has_children)
APR_ARRAY_PUSH(lb->merge_stack, svn_revnum_t) = log_entry->revision;
@@ -314,8 +432,8 @@ log_entry_receiver_xml(void *baton,
const char *date;
const char *message;
- if (lb->cancel_func)
- SVN_ERR(lb->cancel_func(lb->cancel_baton));
+ if (lb->ctx->cancel_func)
+ SVN_ERR(lb->ctx->cancel_func(lb->ctx->cancel_baton));
svn_compat_log_revprops_out(&author, &date, &message, log_entry->revprops);
@@ -463,6 +581,30 @@ svn_cl__log(apr_getopt_t *os,
_("'with-revprop' option only valid in"
" XML mode"));
}
+ else
+ {
+ if (opt_state->show_diff)
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'show-diff' option is not supported in "
+ "XML mode"));
+ }
+
+ if (opt_state->quiet && opt_state->show_diff)
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'quiet' and 'show-diff' options are "
+ "mutually exclusive"));
+ if (opt_state->diff_cmd && (! opt_state->show_diff))
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'diff-cmd' option requires 'show-diff' "
+ "option"));
+ if (opt_state->internal_diff && (! opt_state->show_diff))
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'internal-diff' option requires "
+ "'show-diff' option"));
+ if (opt_state->extensions && (! opt_state->show_diff))
+ return svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("'extensions' option requires 'show-diff' "
+ "option"));
SVN_ERR(svn_cl__args_to_target_array_print_reserved(&targets, os,
opt_state->targets,
@@ -511,9 +653,12 @@ svn_cl__log(apr_getopt_t *os,
}
}
- lb.cancel_func = ctx->cancel_func;
- lb.cancel_baton = ctx->cancel_baton;
+ lb.ctx = ctx;
lb.omit_log_message = opt_state->quiet;
+ SVN_ERR(svn_client_url_from_path2(&lb.target_url, true_path, ctx,
+ pool, pool));
+ lb.show_diff = (! opt_state->quiet) && opt_state->show_diff;
+ lb.diff_extensions = opt_state->extensions;
lb.merge_stack = apr_array_make(pool, 0, sizeof(svn_revnum_t));
lb.pool = pool;
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/main.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/main.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/main.c Tue Aug 10 20:55:56 2010
@@ -114,11 +114,13 @@ typedef enum {
opt_show_revs,
opt_reintegrate,
opt_trust_server_cert,
+ opt_strip_count,
opt_show_copies_as_adds,
opt_ignore_keywords,
opt_reverse_diff,
- opt_include_pattern,
- opt_exclude_pattern,
+ opt_ignore_whitespace,
+ opt_show_diff,
+ opt_internal_diff,
opt_ignore_mergeinfo
} svn_cl__longopt_t;
@@ -324,20 +326,24 @@ const apr_getopt_option_t svn_cl__option
N_("lump-merge all of source URL's unmerged changes\n"
" "
"[alias: --ri]")},
- {"strip", 'p', 1,
- N_("number of leading path components to strip\n"
+ {"strip-count", opt_strip_count, 1,
+ N_("number of leading path components to strip from\n"
" "
- "from pathnames. Specifying -p0 gives the entire\n"
+ "paths parsed from the patch file. --strip-count 0\n"
" "
- "path unmodified. Specifying -p1 causes the path\n"
+ "is the default and leaves paths unmodified.\n"
" "
- " doc/fudge/crunchy.html\n"
+ "--strip-count 1 would change the path\n"
" "
- "to be interpreted as\n"
+ "'doc/fudge/crunchy.html' to 'fudge/crunchy.html'.\n"
" "
- " fudge/crunchy.html\n"
+ "--strip-count 2 would leave just 'crunchy.html'\n"
" "
- "while -p2 would give just crunchy.html")},
+ "The expected component separator is '/' on all\n"
+ " "
+ "platforms. A leading '/' counts as one component.\n"
+ " "
+ "[alias: --strip]")},
{"show-copies-as-adds", opt_show_copies_as_adds, 0,
N_("don't diff copied or moved files with their source\n"
" "
@@ -350,36 +356,18 @@ const apr_getopt_option_t svn_cl__option
N_("apply the unidiff in reverse\n"
" "
"[alias: --rd]")},
- {"include-pattern", opt_include_pattern, 1,
- N_("operate only on targets matching ARG,\n"
- " "
- "which may be a glob pattern such as '*.txt'.\n"
- " "
- "If this option is specified multiple times,\n"
- " "
- "all patterns are matched in turn.\n"
- " "
- "If both --include-pattern and --exclude-pattern\n"
- " "
- "options are specified include patterns are applied\n"
- " "
- "first, i.e. exclude patterns are applied to all\n"
- " "
- "targets which match an include pattern.\n"
- " "
- "[alias: --ip]")},
- {"exclude-pattern", opt_exclude_pattern, 1,
- N_("do not operate on targets matching ARG,\n"
- " "
- "which may be a glob pattern such as '*.txt'.\n"
+ {"ignore-whitespace", opt_ignore_whitespace, 0,
+ N_("ignore whitespace during pattern matching\n"
" "
- "If this option is specified multiple times,\n"
+ "[alias: --iw]")},
+ {"show-diff", opt_show_diff, 0,
+ N_("produce diff output\n"
+ " "
+ "[alias: --diff]")},
+ {"internal-diff", opt_internal_diff, 0,
+ N_("override diff-cmd specified in config file\n"
" "
- "all patterns are matched in turn.\n"
- " "
- "See also the --include-pattern option.\n"
- " "
- "[alias: --ep]")},
+ "[alias: --idiff]")},
{"ignore-mergeinfo", opt_ignore_mergeinfo, 0,
N_("ignore changes to mergeinfo")},
@@ -405,10 +393,12 @@ const apr_getopt_option_t svn_cl__option
{"kl", opt_keep_local, 0, NULL},
{"sr", opt_show_revs, 1, NULL},
{"ri", opt_reintegrate, 0, NULL},
+ {"strip", opt_strip_count, 1, NULL},
{"sca", opt_show_copies_as_adds, 0, NULL},
{"ik", opt_ignore_keywords, 0, NULL},
- {"ip", opt_include_pattern, 1, NULL},
- {"ep", opt_exclude_pattern, 1, NULL},
+ {"iw", opt_ignore_whitespace, 0, NULL},
+ {"diff", opt_show_diff, 0, NULL},
+ {"idiff", opt_internal_diff, 0, NULL},
{0, 0, 0, 0},
};
@@ -583,11 +573,10 @@ const svn_opt_subcommand_desc2_t svn_cl_
" 3. Shorthand for 'svn diff --old=OLD-URL[@OLDREV] --new=NEW-URL[@NEWREV]'\n"
"\n"
" Use just 'svn diff' to display local modifications in a working copy.\n"),
- {'r', 'c', opt_old_cmd, opt_new_cmd, 'N', opt_depth, opt_diff_cmd, 'x',
- opt_no_diff_deleted, opt_notice_ancestry, opt_summarize, opt_changelist,
- opt_no_diff_deleted, opt_show_copies_as_adds, opt_notice_ancestry,
- opt_ignore_mergeinfo, opt_summarize, opt_changelist, opt_force,
- opt_xml} },
+ {'r', 'c', opt_old_cmd, opt_new_cmd, 'N', opt_depth, opt_diff_cmd,
+ opt_internal_diff, 'x', opt_no_diff_deleted, opt_show_copies_as_adds,
+ opt_notice_ancestry, opt_ignore_mergeinfo, opt_summarize, opt_changelist,
+ opt_force, opt_xml} },
{ "export", svn_cl__export, {0}, N_
("Create an unversioned copy of a tree.\n"
"usage: 1. export [-r REV] URL[@PEGREV] [PATH]\n"
@@ -705,7 +694,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
" svn log http://www.example.com/repo/project/foo.c\n"
" svn log http://www.example.com/repo/project foo.c bar.c\n"),
{'r', 'q', 'v', 'g', 'c', opt_targets, opt_stop_on_copy, opt_incremental,
- opt_xml, 'l', opt_with_all_revprops, opt_with_no_revprops, opt_with_revprop},
+ opt_xml, 'l', opt_with_all_revprops, opt_with_no_revprops, opt_with_revprop,
+ opt_show_diff, opt_diff_cmd, opt_internal_diff, 'x'},
{{opt_with_revprop, N_("retrieve revision property ARG")},
{'c', N_("the change made in revision ARG")}} },
@@ -852,8 +842,8 @@ const svn_opt_subcommand_desc2_t svn_cl_
" for addition. Use 'svn revert' to undo deletions and additions you\n"
" do not agree with.\n"
),
- {'q', opt_dry_run, 'p', opt_reverse_diff, opt_include_pattern,
- opt_exclude_pattern} },
+ {'q', opt_dry_run, opt_strip_count, opt_reverse_diff,
+ opt_ignore_whitespace} },
{ "propdel", svn_cl__propdel, {"pdel", "pd"}, N_
("Remove a property from files, dirs, or revisions.\n"
@@ -1744,20 +1734,22 @@ main(int argc, const char *argv[])
case opt_reintegrate:
opt_state.reintegrate = TRUE;
break;
- case 'p':
+ case opt_strip_count:
{
char *end;
opt_state.strip_count = (int) strtol(opt_arg, &end, 10);
if (end == opt_arg || *end != '\0')
{
- err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
- _("Non-numeric strip argument given"));
+ err = svn_error_createf(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("Invalid strip count '%s'"), opt_arg);
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
if (opt_state.strip_count < 0)
{
- err = svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
- _("Argument to --strip must be positive"));
+ err = svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
+ _("Negative strip count '%i' "
+ "(strip count must be positive)"),
+ opt_state.strip_count);
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
}
@@ -1768,17 +1760,14 @@ main(int argc, const char *argv[])
case opt_reverse_diff:
opt_state.reverse_diff = TRUE;
break;
- case opt_include_pattern:
- if (opt_state.include_patterns == NULL)
- opt_state.include_patterns = apr_array_make(pool, 1,
- sizeof (const char *));
- APR_ARRAY_PUSH(opt_state.include_patterns, const char *) = opt_arg;
- break;
- case opt_exclude_pattern:
- if (opt_state.exclude_patterns == NULL)
- opt_state.exclude_patterns = apr_array_make(pool, 1,
- sizeof (const char *));
- APR_ARRAY_PUSH(opt_state.exclude_patterns, const char *) = opt_arg;
+ case opt_ignore_whitespace:
+ opt_state.ignore_whitespace = TRUE;
+ break;
+ case opt_show_diff:
+ opt_state.show_diff = TRUE;
+ break;
+ case opt_internal_diff:
+ opt_state.internal_diff = TRUE;
break;
case opt_ignore_mergeinfo:
opt_state.ignore_mergeinfo = TRUE;
@@ -1952,6 +1941,16 @@ main(int argc, const char *argv[])
return svn_cmdline_handle_exit_error(err, pool, "svn: ");
}
+ /* Disallow simultaneous use of both --diff-cmd and
+ --internal-diff. */
+ if (opt_state.diff_cmd && opt_state.internal_diff)
+ {
+ err = svn_error_create(SVN_ERR_CL_ARG_PARSING_ERROR, NULL,
+ _("--diff-cmd and --internal-diff "
+ "are mutually exclusive"));
+ return svn_cmdline_handle_exit_error(err, pool, "svn: ");
+ }
+
/* Ensure that 'revision_ranges' has at least one item, and make
'start_revision' and 'end_revision' match that item. */
if (opt_state.revision_ranges->nelts == 0)
@@ -1998,8 +1997,8 @@ main(int argc, const char *argv[])
if (!err)
{
- err = svn_wc__node_get_kind(&kind, ctx->wc_ctx, local_abspath,
- FALSE, pool);
+ err = svn_wc_read_kind(&kind, ctx->wc_ctx, local_abspath, FALSE,
+ pool);
if (!err && kind != svn_node_none && kind != svn_node_unknown)
{
@@ -2128,6 +2127,9 @@ main(int argc, const char *argv[])
if (opt_state.merge_cmd)
svn_config_set(cfg_config, SVN_CONFIG_SECTION_HELPERS,
SVN_CONFIG_OPTION_DIFF3_CMD, opt_state.merge_cmd);
+ if (opt_state.internal_diff)
+ svn_config_set(cfg_config, SVN_CONFIG_SECTION_HELPERS,
+ SVN_CONFIG_OPTION_DIFF_CMD, NULL);
/* Check for mutually exclusive args --auto-props and --no-auto-props */
if (opt_state.autoprops && opt_state.no_autoprops)
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/patch-cmd.c Tue Aug 10 20:55:56 2010
@@ -79,9 +79,9 @@ svn_cl__patch(apr_getopt_t *os,
SVN_ERR(svn_client_patch(abs_patch_path, abs_target_path,
opt_state->dry_run, opt_state->strip_count,
opt_state->reverse_diff,
- opt_state->include_patterns,
- opt_state->exclude_patterns,
- NULL, NULL, ctx, pool, pool));
+ opt_state->ignore_whitespace,
+ TRUE, NULL, NULL, ctx, pool, pool));
+
if (! opt_state->quiet)
SVN_ERR(svn_cl__print_conflict_stats(ctx->notify_baton2, pool));
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/propedit-cmd.c Tue Aug 10 20:55:56 2010
@@ -229,8 +229,8 @@ svn_cl__propedit(apr_getopt_t *os,
/* Split the path if it is a file path. */
SVN_ERR(svn_dirent_get_absolute(&local_abspath, target, subpool));
- SVN_ERR(svn_wc__node_get_kind(&kind, ctx->wc_ctx, local_abspath,
- FALSE, subpool));
+ SVN_ERR(svn_wc_read_kind(&kind, ctx->wc_ctx, local_abspath, FALSE,
+ subpool));
if (kind == svn_node_none)
return svn_error_createf(
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/status-cmd.c Tue Aug 10 20:55:56 2010
@@ -40,6 +40,7 @@
#include "cl.h"
#include "svn_private_config.h"
+#include "private/svn_wc_private.h"
@@ -65,13 +66,15 @@ struct status_baton
unsigned int text_conflicts;
unsigned int prop_conflicts;
unsigned int tree_conflicts;
+
+ svn_client_ctx_t *ctx;
};
struct status_cache
{
const char *path;
- svn_wc_status2_t *status;
+ svn_wc_status3_t *status;
};
/* Print conflict stats accumulated in status baton SB.
@@ -140,13 +143,13 @@ print_finish_target_xml(svn_revnum_t rep
static svn_error_t *
print_status_normal_or_xml(void *baton,
const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
apr_pool_t *pool)
{
struct status_baton *sb = baton;
if (sb->xml_mode)
- return svn_cl__print_status_xml(path, status, pool);
+ return svn_cl__print_status_xml(path, status, sb->ctx, pool);
else
return svn_cl__print_status(path, status, sb->detailed,
sb->show_last_committed,
@@ -155,6 +158,7 @@ print_status_normal_or_xml(void *baton,
&sb->text_conflicts,
&sb->prop_conflicts,
&sb->tree_conflicts,
+ sb->ctx,
pool);
}
@@ -163,22 +167,51 @@ print_status_normal_or_xml(void *baton,
static svn_error_t *
print_status(void *baton,
const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
apr_pool_t *pool)
{
struct status_baton *sb = baton;
+ svn_wc_status3_t *tweaked_status;
+ svn_revnum_t revision;
+ svn_revnum_t changed_rev;
+ apr_time_t changed_date;
+ const char *changed_author;
+ const char *local_abspath;
+
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, sb->cl_pool));
+ tweaked_status = svn_wc_dup_status3(status, sb->cl_pool);
+
+ /* ### The revision information with associates are based on what
+ * ### _read_info() returns. The svn_wc_status_func4_t callback is
+ * ### suppposed to handle the gathering of additional information from the
+ * ### WORKING nodes on its own. Until we've agreed on how the CLI should
+ * ### handle the revision information, we use this appproach to stay compat
+ * ### with our testsuite. */
+ if (status->versioned)
+ {
+ SVN_ERR(svn_wc__node_get_working_rev_info(&revision, &changed_rev,
+ &changed_date,
+ &changed_author,
+ sb->ctx->wc_ctx,
+ local_abspath, sb->cl_pool,
+ pool));
+ tweaked_status->revision = revision;
+ tweaked_status->changed_rev = changed_rev;
+ tweaked_status->changed_date = changed_date;
+ tweaked_status->changed_author = changed_author;
+ }
- /* If there's a changelist attached to the entry, then we don't print
+ /* If the path is part of a changelist, then we don't print
the item, but instead dup & cache the status structure for later. */
- if (status->entry && status->entry->changelist)
+ if (status->changelist)
{
/* The hash maps a changelist name to an array of status_cache
structures. */
apr_array_header_t *path_array;
- const char *cl_key = apr_pstrdup(sb->cl_pool, status->entry->changelist);
+ const char *cl_key = apr_pstrdup(sb->cl_pool, status->changelist);
struct status_cache *scache = apr_pcalloc(sb->cl_pool, sizeof(*scache));
scache->path = apr_pstrdup(sb->cl_pool, path);
- scache->status = svn_wc_dup_status2(status, sb->cl_pool);
+ scache->status = svn_wc_dup_status3(tweaked_status, sb->cl_pool);
path_array =
apr_hash_get(sb->cached_changelists, cl_key, APR_HASH_KEY_STRING);
@@ -194,7 +227,7 @@ print_status(void *baton,
return SVN_NO_ERROR;
}
- return print_status_normal_or_xml(baton, path, status, pool);
+ return print_status_normal_or_xml(baton, path, tweaked_status, pool);
}
/* This implements the `svn_opt_subcommand_t' interface. */
@@ -255,6 +288,7 @@ svn_cl__status(apr_getopt_t *os,
sb.text_conflicts = 0;
sb.prop_conflicts = 0;
sb.tree_conflicts = 0;
+ sb.ctx = ctx;
SVN_ERR(svn_opt_eat_peg_revisions(&targets, targets, scratch_pool));
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/status.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/status.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/status.c Tue Aug 10 20:55:56 2010
@@ -34,6 +34,7 @@
#include "cl.h"
#include "svn_private_config.h"
#include "tree-conflicts.h"
+#include "private/svn_wc_private.h"
/* Return the single character representation of STATUS */
static char
@@ -62,7 +63,7 @@ generate_status_code(enum svn_wc_status_
/* Return the single character representation of the switched column
status. */
static char
-generate_switch_column_code(const svn_wc_status2_t *status)
+generate_switch_column_code(const svn_wc_status3_t *status)
{
if (status->switched)
return 'S';
@@ -104,10 +105,11 @@ print_status(const char *path,
svn_boolean_t detailed,
svn_boolean_t show_last_committed,
svn_boolean_t repos_locks,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
unsigned int *text_conflicts,
unsigned int *prop_conflicts,
unsigned int *tree_conflicts,
+ svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
enum svn_wc_status_kind text_status = status->text_status;
@@ -118,20 +120,39 @@ print_status(const char *path,
'C' in the tree-conflict column, overriding any other status.
We also print a separate line describing the nature of the tree
conflict. */
- if (status->tree_conflict)
+ if (status->conflicted)
{
const char *desc;
- tree_status_code = 'C';
- svn_cl__get_human_readable_tree_conflict_description(
- &desc, status->tree_conflict, pool);
- tree_desc_line = apr_psprintf(pool, "\n > %s", desc);
- (*tree_conflicts)++;
- }
- else
- {
- if (text_status == svn_wc_status_conflicted)
+ const char *local_abspath;
+ svn_boolean_t text_conflicted;
+ svn_boolean_t prop_conflicted;
+ svn_boolean_t tree_conflicted;
+
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
+
+ SVN_ERR(svn_wc__node_check_conflicts(&prop_conflicted,
+ &text_conflicted,
+ &tree_conflicted, ctx->wc_ctx,
+ local_abspath, pool, pool));
+
+
+ if (tree_conflicted)
+ {
+ const svn_wc_conflict_description2_t *tree_conflict;
+ svn_wc_conflict_description_t *old_tree_conflict;
+ SVN_ERR(svn_wc__get_tree_conflict(&tree_conflict, ctx->wc_ctx,
+ local_abspath, pool, pool));
+ old_tree_conflict = svn_wc__cd2_to_cd(tree_conflict, pool);
+
+ tree_status_code = 'C';
+ svn_cl__get_human_readable_tree_conflict_description(
+ &desc, old_tree_conflict, pool);
+ tree_desc_line = apr_psprintf(pool, "\n > %s", desc);
+ (*tree_conflicts)++;
+ }
+ else if (text_conflicted)
(*text_conflicts)++;
- if (status->prop_status == svn_wc_status_conflicted)
+ else if (prop_conflicted)
(*prop_conflicts)++;
}
@@ -140,14 +161,27 @@ print_status(const char *path,
char ood_status, lock_status;
const char *working_rev;
+ /* ### FIXME: For now, we'll tweak an SVN_INVALID_REVNUM and make it
+ ### 0. In WC-1, files scheduled for addition were assigned
+ ### revision=0. This is wrong, and we're trying to remedy that,
+ ### but for the sake of test suite and code sanity now in WC-NG,
+ ### we'll just maintain the old behavior. */
if (! status->entry)
working_rev = "";
- else if (! SVN_IS_VALID_REVNUM(status->entry->revision))
- working_rev = " ? ";
+ else if (! SVN_IS_VALID_REVNUM(status->revision))
+ {
+ if (status->copied)
+ working_rev = "-";
+ else if (text_status == svn_wc_status_added
+ || text_status == svn_wc_status_replaced)
+ working_rev = "0";
+ else
+ working_rev = " ? ";
+ }
else if (status->copied)
working_rev = "-";
else
- working_rev = apr_psprintf(pool, "%ld", status->entry->revision);
+ working_rev = apr_psprintf(pool, "%ld", status->revision);
if (status->repos_text_status != svn_wc_status_none
|| status->repos_prop_status != svn_wc_status_none)
@@ -159,9 +193,9 @@ print_status(const char *path,
{
if (status->repos_lock)
{
- if (status->entry && status->entry->lock_token)
+ if (status->lock_token)
{
- if (strcmp(status->repos_lock->token, status->entry->lock_token)
+ if (strcmp(status->repos_lock->token, status->lock_token)
== 0)
lock_status = 'K';
else
@@ -170,28 +204,28 @@ print_status(const char *path,
else
lock_status = 'O';
}
- else if (status->entry && status->entry->lock_token)
+ else if (status->lock_token)
lock_status = 'B';
else
lock_status = ' ';
}
else
- lock_status = (status->entry && status->entry->lock_token) ? 'K' : ' ';
+ lock_status = (status->lock_token) ? 'K' : ' ';
if (show_last_committed)
{
const char *commit_rev;
const char *commit_author;
- if (status->entry && SVN_IS_VALID_REVNUM(status->entry->cmt_rev))
- commit_rev = apr_psprintf(pool, "%ld", status->entry->cmt_rev);
+ if (SVN_IS_VALID_REVNUM(status->changed_rev))
+ commit_rev = apr_psprintf(pool, "%ld", status->changed_rev);
else if (status->entry)
commit_rev = " ? ";
else
commit_rev = "";
- if (status->entry && status->entry->cmt_author)
- commit_author = status->entry->cmt_author;
+ if (status->changed_author)
+ commit_author = status->changed_author;
else if (status->entry)
commit_author = " ? ";
else
@@ -237,7 +271,7 @@ print_status(const char *path,
status->locked ? 'L' : ' ',
status->copied ? '+' : ' ',
generate_switch_column_code(status),
- ((status->entry && status->entry->lock_token)
+ ((status->lock_token)
? 'K' : ' '),
tree_status_code,
path,
@@ -249,16 +283,24 @@ print_status(const char *path,
svn_error_t *
svn_cl__print_status_xml(const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
+ svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
svn_stringbuf_t *sb = svn_stringbuf_create("", pool);
apr_hash_t *att_hash;
+ const char *local_abspath;
+ svn_boolean_t tree_conflicted;
if (status->text_status == svn_wc_status_none
&& status->repos_text_status == svn_wc_status_none)
return SVN_NO_ERROR;
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
+ SVN_ERR(svn_wc__node_check_conflicts(NULL, NULL, &tree_conflicted,
+ ctx->wc_ctx, local_abspath, pool,
+ pool));
+
svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "entry",
"path", svn_dirent_local_style(path, pool), NULL);
@@ -277,43 +319,43 @@ svn_cl__print_status_xml(const char *pat
apr_hash_set(att_hash, "file-external", APR_HASH_KEY_STRING, "true");
if (status->entry && ! status->entry->copied)
apr_hash_set(att_hash, "revision", APR_HASH_KEY_STRING,
- apr_psprintf(pool, "%ld", status->entry->revision));
- if (status->tree_conflict)
+ apr_psprintf(pool, "%ld", status->revision));
+ if (tree_conflicted)
apr_hash_set(att_hash, "tree-conflicted", APR_HASH_KEY_STRING,
"true");
svn_xml_make_open_tag_hash(&sb, pool, svn_xml_normal, "wc-status",
att_hash);
- if (status->entry && SVN_IS_VALID_REVNUM(status->entry->cmt_rev))
+ if (SVN_IS_VALID_REVNUM(status->changed_rev))
{
- svn_cl__print_xml_commit(&sb, status->entry->cmt_rev,
- status->entry->cmt_author,
+ svn_cl__print_xml_commit(&sb, status->changed_rev,
+ status->changed_author,
svn_time_to_cstring(status->entry->cmt_date,
pool),
pool);
}
- if (status->entry && status->entry->lock_token)
+ if (status->lock_token)
{
svn_xml_make_open_tag(&sb, pool, svn_xml_normal, "lock", NULL);
- svn_cl__xml_tagged_cdata(&sb, pool, "token", status->entry->lock_token);
+ svn_cl__xml_tagged_cdata(&sb, pool, "token", status->lock_token);
/* If lock_owner is NULL, assume WC is corrupt. */
- if (status->entry->lock_owner)
+ if (status->lock_owner)
svn_cl__xml_tagged_cdata(&sb, pool, "owner",
- status->entry->lock_owner);
+ status->lock_owner);
else
return svn_error_createf(SVN_ERR_WC_CORRUPT, NULL,
_("'%s' has lock token, but no lock owner"),
svn_dirent_local_style(path, pool));
svn_cl__xml_tagged_cdata(&sb, pool, "comment",
- status->entry->lock_comment);
+ status->lock_comment);
svn_cl__xml_tagged_cdata(&sb, pool, "created",
svn_time_to_cstring
- (status->entry->lock_creation_date, pool));
+ (status->lock_creation_date, pool));
svn_xml_make_close_tag(&sb, pool, "lock");
}
@@ -369,7 +411,7 @@ svn_cl__print_status_xml(const char *pat
/* Called by status-cmd.c */
svn_error_t *
svn_cl__print_status(const char *path,
- const svn_wc_status2_t *status,
+ const svn_wc_status3_t *status,
svn_boolean_t detailed,
svn_boolean_t show_last_committed,
svn_boolean_t skip_unrecognized,
@@ -377,15 +419,24 @@ svn_cl__print_status(const char *path,
unsigned int *text_conflicts,
unsigned int *prop_conflicts,
unsigned int *tree_conflicts,
+ svn_client_ctx_t *ctx,
apr_pool_t *pool)
{
+ const char *local_abspath;
+ svn_boolean_t tree_conflicted;
+
+ SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
+ SVN_ERR(svn_wc__node_check_conflicts(NULL, NULL, &tree_conflicted,
+ ctx->wc_ctx, local_abspath, pool,
+ pool));
if (! status
- || (skip_unrecognized && !(status->entry || status->tree_conflict))
+ || (skip_unrecognized && !(status->entry || tree_conflicted))
|| (status->text_status == svn_wc_status_none
&& status->repos_text_status == svn_wc_status_none))
return SVN_NO_ERROR;
return print_status(svn_dirent_local_style(path, pool),
detailed, show_last_committed, repos_locks, status,
- text_conflicts, prop_conflicts, tree_conflicts, pool);
+ text_conflicts, prop_conflicts, tree_conflicts,
+ ctx, pool);
}
Modified: subversion/branches/ignore-mergeinfo/subversion/svn/tree-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/svn/tree-conflicts.c?rev=984206&r1=984205&r2=984206&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/svn/tree-conflicts.c (original)
+++ subversion/branches/ignore-mergeinfo/subversion/svn/tree-conflicts.c Tue Aug 10 20:55:56 2010
@@ -99,8 +99,7 @@ svn_cl__get_human_readable_tree_conflict
const svn_wc_conflict_description_t *conflict,
apr_pool_t *pool)
{
- const char *victim_name, *action, *reason, *operation;
- victim_name = svn_dirent_basename(conflict->path, pool);
+ const char *action, *reason, *operation;
reason = reason_str(conflict);
action = action_str(conflict);
operation = svn_cl__operation_str_human_readable(conflict->operation, pool);