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);