SVN 查看历史信息通过svn命令可以根据时间或修订号去查看过去的版本,或者某一版本所做的具体的修改。
以下四个命令可以用来查看svn 的历史:svn log 用来展示svn 的版本作者、日期、路径等等;svn diff 用来显示特定修改的行级详细信息;svn cat 取得在特定版本的某文件显示在当前屏幕;svn list 显示一个目录或某一版本存在。
(一)svn loglog: 显示一组版本与/或文件的提交日志信息。
用法: 1、log [PA TH]2、log URL[@REV] [PA TH...]1、显示本地PA TH (默认: “.”) 的日志信息。
默认的版本范围是BASE:1。
2、显示URL 中PA TH (默认: “.”) 的日志信息。
如果指定了REV,就从REV开始查找URL,版本范围是REV:1。
否则就从HEAD 开始查找URL,版本范围是HEAD:1。
可以指定多个“-c”或“-r”选项(但是不允许同时使用“-c”和“-r”选项),以及混合使用前向和后向范围。
使用-v 时,在日志信息中显示受影响的路径名。
使用-q 时,不显示日志信息主体(请注意,它可与-v 并存)。
每条日志信息只会显示一次,即使指定了此版本涉及到的多个路径。
默认日志信息会追溯复制历史;使用--stop-on-copy 可以关闭这种行为,这可以用来找出分支点。
有效选项:-r [--revision] ARG : ARG (一些命令也接受ARG1:ARG2范围)版本参数可以是如下之一:NUMBER 版本号'{' DA TE '}' 在指定时间以后的版本'HEAD' 版本库中的最新版本'BASE' 工作副本的基线版本'COMMITTED' 最后提交或基线之前'PREV' COMMITTED的前一版本-q [--quiet] : 不打印信息,或只打印概要信息-v [--verbose] : 打印附加信息-g [--use-merge-history] : 从合并历史使用/显示额外信息-c [--change] ARG : 版本ARG 引起的改变--targets ARG : 传递文件ARG 内容为附件参数--stop-on-copy : 查看历史不要跨越不同的副本--incremental : 给予适合串联的输出--xml : 输出为XML-l [--limit] ARG : 日值项最大值--with-all-revprops : 获取所有版本属性--with-no-revprops : 没有找回版本属性--with-revprop ARG : 获取版本属性ARG全局选项:--username ARG : 指定用户名称ARG--password ARG : 指定密码ARG--no-auth-cache : 不要缓存用户认证令牌--non-interactive : 不要交互提示--trust-server-cert : 不提示的接受未知的SSL 服务器证书(只用于选项“--non-interactive”)--config-dir ARG : 从目录ARG 读取用户配置文件--config-option ARG : 以下属格式设置用户配置选项:FILE:SECTION:OPTION=[V ALUE]例如:servers:global:http-library=serf实例1:获取版本号14的版本信息svn log -r r14 或者svn log -r 14实例2:获取版本号14至17的版本信息svn log -r r14:r17 或者svn log -r 14:17实例3:获取全部版本信息svn log实例4:获取制定单个文件的版本信息svn log foo.csvn log /repo/project/foo.csvn log /repo/project foo.c bar.c实例5:查看版本信息及提交的文件路径并导入以XML形式导出svn log -v -r 14:17 > svn.xml --xmlsvn log -v -r 14:17 >> svn.xml --xml(二)svn diff用法: 1. diff [-c M | -r N[:M]] [TARGET[@REV]...]2. diff [-r N[:M]] --old=OLD-TGT[@OLDREV] [--new=NEW-TGT[@NEWREV]] \[PA TH...]3. diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]1、显示版本REV 中TARGET 在两个不同的版本之间的差异。
TARGET 要么全是工作副本路径,要么全是URL。
如果TARGET 是工作副本路径,N 默认为BASE,M 默认为工作副本;如果TARGET 是URL,N 必须指定,M 默认为HEAD。
“-c M”等价于“-r M-1:M”,“-c -M”等价于“-r M:M-1”。
2、显示新旧版本中对应目标的差异。
PA TH 是相对于新旧目标的相对路径,它限制只输出这些路径上的差异。
新旧目标可以是工作副本路径或地址URL[@REV]。
新目标默认与旧目标相同,OLDREV 默认为N,NEWREV 默认为M。
3、“svn diff --old=OLD-URL[@OLDREV] --new=NEW-URL[@NEWREV]”的简写。
使用不加参数的“svn diff”显示工作副本中的本地修改。
有效选项:-r [--revision] ARG : ARG (一些命令也接受ARG1:ARG2范围)版本参数可以是如下之一:NUMBER 版本号'{' DA TE '}' 在指定时间以后的版本'HEAD' 版本库中的最新版本'BASE' 工作副本的基线版本'COMMITTED' 最后提交或基线之前'PREV' COMMITTED的前一版本-c [--change] ARG : 在ARG版本(如同-r ARG-1:ARG)作的修改如果ARG为负数则等价于-r ARG:ARG-1 --old ARG :使用ARG 作为旧目标--new ARG : 使用ARG 作为新目标-N [--non-recursive] : 过时;尝试--depth=files 或--depth=immediates--depth ARG : 受深度参数ARG(“empty”,“files”,“immediates”,或“infinity”) 约束的操作--diff-cmd ARG : 使用ARG 作为比较命令-x [--extensions] ARG : 缺省: “-u”。
当Subversion 调用外部比较程序时,ARG 直接传给它。
但是当Subversion 使用缺省的内置比较实现,或者正显示追溯时, ARG 可以是:-u (--unified):输出三行统一上下文。
-b (--ignore-space-change):忽略空白数量的修改。
-w (--ignore-all-space):忽略所有的空白。
--ignore-eol-style:忽略行尾样式的改变。
-p (--show-c-function):在比较输出中显示C 函数名称。
--no-diff-deleted : 不要输出删除文件造成的差异--notice-ancestry : 比较差异时提示原始信息--summarize : 显示结果的概要--changelist ARG : 只能对修改列表ARG 成员操作[aliases: --cl]--force : 强制操作运行--xml : 输出为XML全局选项:--username ARG : 指定用户名称ARG--password ARG :指定密码ARG--no-auth-cache : 不要缓存用户认证令牌--non-interactive : 不要交互提示--trust-server-cert : 不提示的接受未知的SSL 服务器证书(只用于选项“--non-interactive”)--config-dir ARG : 从目录ARG 读取用户配置文件--config-option ARG : 以下属格式设置用户配置选项:FILE:SECTION:OPTION=[V ALUE]例如:servers:global:http-library=serf实例1:如果用svn diff,不带任何参数,它将会比较你的工作文件与缓存在.svn的“原始”拷贝Svn diffIndex:rules.txt============================================================--- rules.txt (revision 3)+++ rules.txt (working copy)@@ -1,4 +1,5 @@Be kind to othersFreedom = ResponsibilityEverything in moderation-Chew with your mouth open实例2:比较工作拷贝和版本库svn diff -r 3 rule.txt,就是比较你的工作拷贝和版本库中版本号为3的文件rule.txt 实例3:比较版本库与版本库通过-r(revision)传递两个通过冒号分开的版本号,这两个版本会进行比较svn diff -r 2:3 rule.txt 用来比较svn工作版本中版本号2和3的这个文件的变化(三)svn cat如果只是希望检查一个过去版本,不希望查看他们的区别,可使用svn catsvn cat -r 版本号rule,txt这个命令会显示在该版本号下的该文件内容(四)svn listsvn list可以在不下载文件到本地目录的情况下来察看目录中的文件:svn list /repos/svnREADMEbranches/clients/tags/基本使用34trunk/如果你希望察看详细信息,你可以使用--verbose(-v) 参数:svn list -v /repos/svn20620 harry 1084 Jul 13 2006 README23339 harry Feb 04 01:40 branches/21282 sally Aug 27 09:41 developer-resources/23198 harry Jan 23 17:17 tags/23351 sally Feb 05 13:26 trunk/。