`
sxysxy
  • 浏览: 216464 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SVN使用log,list,cat,diff查看所有及特定文件版本信息

 
阅读更多

svn log展示给你主要信息:每个版本附加在版本上的作者与日期信息和所有路径修改。
svn diff显示特定修改的行级详细信息。
svn cat取得在特定版本的某一个文件显示在当前屏幕。
svn list显示一个目录在某一版本存在的文件。

找出一个文件或目录的历史信息,使用svn log命令,svn log将会提供你一条记录,包括:谁对文件或目录作了修改、哪个修订版本作了修改、修订版本的日期和时间、还有如果你当时提供了日志信息,也会显示。

$ svn log
------------------------------------------------------------------------
r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line
Added include lines and corrected # of cheese slices.
------------------------------------------------------------------------
r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line
Added main() methods.
------------------------------------------------------------------------
r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 1 line
Initial import
------------------------------------------------------------------------
[/pre]注意日志信息缺省根据时间逆序排列,如果希望察看特定顺序的一段修订版本或者单一版本,使用--revision(-r) 选项:
$ svn log -r 5:19# shows logs 5 through 19 in chronological order
$ svn log -r 19:5# shows logs 5 through 19 in reverse order
$ svn log -r 8 # shows log for revision 8

也可以检查单个文件或目录的日志历史,举个例子:
$ svn log foo.c

$ svn loghttp://foo.com/svn/trunk/code/foo.c

[/pre]这样只会显示这个工作文件(或者URL)做过修订的版本的日志信息。

如果你希望得到目录和文件更多的信息,你可以对svn log命令使用--verbose (-v)开关,因为Subversion允许移动和复制文件和目录,所以跟踪路径修改非常重要,在详细模式下,svn log输出中会包括一个路径修改的历史:
$ svn log -r 8 -v
------------------------------------------------------------------------
r8 | sally | 2002-07-14 08:15:29 -0500 | 1 line
Changed paths:
M /trunk/code/foo.c
M /trunk/code/bar.h
A /trunk/code/doc/README
Frozzled the sub-space winch.
------------------------------------------------------------------------
[/pre]svn log也有一个--quiet (-q)选项,会禁止日志信息的主要部分,当与--verbose结合使用,仅会显示修改的文件名。
为什么svn log给我一个空的回应?
当使用Subversion一些时间后,许多用户会遇到这种情况:
$ svn log -r 2
------------------------------------------------------------------------
$
[/pre]乍一看,好像是一个错误,但是想一下修订版本号是作用在版本库整体之上的,如果你没有提供路径,svn log会使用当前目录作为默认的目标,所以,作为结果,如果你对一个本身和子目录在指定版本到现在没有做过修改的目录运行这个命令,你会得到空的日志。如果你希望察看某个版本做的修改的日志,只需要直接告诉svn log使用版本库顶级的目录作为参数,例如svn log -r 2http://svn.collab.net/repos/svn
检查历史修改的详情
我们已经看过svn diff—使用标准区别文件格式显示区别,它在提交前用来显示本地工作拷贝与版本库的区别。
事实上,svn diff种不同的用法:

  • 检查本地修改
  • 比较工作拷贝与版本库
  • 比较版本库与版本库
比较本地修改
像我们看到的,不使用任何参数调用时,svn diff将会比较你的工作文件与缓存在.svn的“原始”拷贝:
$ svn diff
Index: rules.txt
===================================================================
--- rules.txt(revision 3)
+++ rules.txt(working copy)
@@ -1,4 +1,5 @@
Be kind to others
Freedom = Responsibility
Everything in moderation
-Chew with your mouth open
+Chew with your mouth closed
+Listen when others are speaking
$
[/pre]比较工作拷贝和版本库
如果传递一个--revision(-r)参数,你的工作拷贝会与指定的版本比较。
$ svn diff -r 3 rules.txt
Index: rules.txt
===================================================================
--- rules.txt(revision 3)
+++ rules.txt(working copy)
@@ -1,4 +1,5 @@
Be kind to others
Freedom = Responsibility
Everything in moderation
-Chew with your mouth open
+Chew with your mouth closed
+Listen when others are speaking
$
[/pre]比较版本库与版本库
如果通过--revision (-r)传递两个通过冒号分开的版本号,这两个版本会进行比较。
$ svn diff -r 2:3 rules.txt
Index: rules.txt
===================================================================
--- rules.txt(revision 2)
+++ rules.txt(revision 3)
@@ -1,4 +1,4 @@
Be kind to others
-Freedom = Chocolate Ice Cream
+Freedom = Responsibility
Everything in moderation
Chew with your mouth open
$
[/pre]与前一个修订版本比较更方便的办法是使用--change (-c):
$ svn diff -c 3 rules.txt
Index: rules.txt
===================================================================
--- rules.txt(revision 2)
+++ rules.txt(revision 3)
@@ -1,4 +1,4 @@
Be kind to others
-Freedom = Chocolate Ice Cream
+Freedom = Responsibility
Everything in moderation
Chew with your mouth open
$
[/pre]最后,即使你在本机没有工作拷贝,还是可以比较版本库的修订版本,只需要在命令行中输入合适的URL:
$ svn diff -c 5http://svn.example.com/repos/example/trunk/text/rules.txt

$
[/pre]浏览版本库
通过svn catsvn list,你可以在未修改工作修订版本的情况下查看文件和目录的内容,实际上,你甚至也不需要有一个工作拷贝。
svn cat
如果你只是希望检查一个过去的版本而不希望察看它们的区别,使用svn cat
$ svn cat -r 2 rules.txt
Be kind to others
Freedom = Chocolate Ice Cream
Everything in moderation
Chew with your mouth open
$
[/pre]你可以重定向输出到一个文件:
$ svn cat -r 2 rules.txt > rules.txt.v2
$
[/pre]svn list
svn list可以在不下载文件到本地目录的情况下来察看目录中的文件:
$ svn listhttp://svn.collab.net/repos/svn
README
branches/
clients/
tags/
trunk/
[/pre]如果你希望察看详细信息,你可以使用--verbose(-v) 参数:
$ svn list -vhttp://svn.collab.net/repos/svn
20620 harry1084 Jul 132006 README
23339 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/
[/pre]这些列告诉你文件和目录最后修改的修订版本、做出修改的用户、如果是文件还会有文件的大小,最后是修改日期和项目的名字。
警告
没有任何参数的svn list命令缺省使用当前工作拷贝的版本库URL,而不是本地工作拷贝的目录。毕竟,如果你希望列出本地目录,你只需要使用ls(或任何合理的非UNIX等价物)。
获得旧的版本库快照
除了以上的命令,你可以使用带参数--revision的svn updatesvn checkout来使整个工作拷贝“回到过去”[8]
$ svn checkout -r 1729 # Checks out a new working copy at r1729

$ svn update -r 1729 # Updates an existing working copy to r1729

[/pre]提示
许多Subversion新手使用前面的svn update实例来“回退”修改,但是你不能提交修改,你获得有新修订版本的过时工作拷贝也是没有用的。关于如何“回退”,我们可以看“找回删除的项目”一节
最后,如果你构建了一个版本,并且希望从Subversion打包文件,但是你不希望有讨厌的.svn目录,这时你可以导出版本库的一部分文件而没有.svn目录。就像svn updatesvn checkout,你也可以传递--revision选项给svn export
$ svn exporthttp://svn.example.com/svn/repos1# Exports latest revision

$ svn exporthttp://svn.example.com/svn/repos1-r 1729
# Exports revision r1729

[/pre]
分享到:
评论

相关推荐

    Windows svnlog 转Excel

    方法一:双击WINsvnlog2excel.bat,即可在当前文件夹下生成SVNLog的excel文件,默认导出bat文件第二行中SVNPATH所定义的SVN路径的LOG。可以修改bat文件中第二行的SVNPATH,导出指定SVN路径的log 方法二:在CMD...

    svnlog2excel.jar

    svnlog2excel.jar是用于...svnlog2excel.sh 将指定SVN路径的版本记录导出为xml格式,去掉第一个版本(一般为初始化代码且数量太大无需处理),并且调用svnlog2excel.jar 生成excel文件。 jxl.jar为读写excel要调用的包

    SVN使用手册中文版快速入门

    我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav...

    svn相关资料

    svn log 5:19 查看版本5到19的历史信息 svn log 查看当前目录的历史修改信息 svn log filename 查看单个文件的历史修改信息 svn log $URL 查看$URL的历史信息 www.2cto.com svn diff 比较本地工作拷贝的修改 svn ...

    SVN使用手册中文版.chm

    我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav...

    解决p42svn中文log乱码的问题(对比文件)

    解决p42svn中文log乱码的问题(对比文件)old 文件夹中为旧的文件,new文件夹中为修改后的文件。详细查看:http://blog.csdn.net/setsail_wu/archive/2009/05/23/4210970.aspx

    用python脚本处理和分析svn log xml

    本代码实现了用python处理svn log数据(xml格式),把Log的数据转化为一个python的数据结构,方便作更进一步数据挖掘!

    svn_excel_diff

    设置方法:右键-->TortoiseSVN-->Settings--->Diff Viewer-->Advanced-->.xls-->edit:把路径设计svn_excel_diff.exe所以路径,如:D:/svn_excel_diff.exe. 即可使用。有问题联系:boluns@126.com

    svn强制写日志和可修改log功能

    实现svn强制写日志和可修改log功能,可以更方便的更规范的使用svn日志功能.

    svn-diff-diff:一个导出两个版本的SVN diff文件结构的小工具

    一个导出两个版本的SVN差异文件结构的小工具。 该工具使用 python 2.7、pysvn 和 wxWidgets 创建。 注意:二进制版本仅支持 svn v.1.8.10 或更高版本 依赖库 Python 2.7 pysvn 1.7.9 ( ) wxWidgets

    python svn 版本间改动文件列表

    svn两个版本之间改动的文件列表 包括新增和更新的文件 用PYTHON写的脚本

    java代码利用svnkit操作svn导出某版本或多个版本修改的文件

    利用svnkit操作svn,实现对版本修改文件的导出,可以导出多个版本,.java文件将会在本地取出.class文件,导出后压缩成压缩包,主要用于服务器上的资源更新,不需要开发人员去找到对应的.class文件或其他文件压缩然后...

    使用SVN进行版本控制 使用SVN1.2

    版本控制工具 SVN无疑是最主流 也是企业用的最普遍的 这篇SVN详细介绍了SVN的所有常用命令 以及相关的SVN概念 如主干分支 update checkout switch等...

    删除svn 版本信息的两种途径

    删除svn 版本信息的两种途径,一个是导入注册表中,然后右键菜单触发;一个是bat文件,直接考在目标文件根目录下运行

    自动获取svn版本号,修改指定dll,exe版本信息

    自动获取工程svn提交的版本号,然后修改指定dll,exe的版本信息。最好达到的效果是,每次提交完svn后重新编译代码,会将最后提交的版本号写到version里比如:2.0.0.64,;2.0是大版本号,手动修改资源信息即可,后两...

    删除当前目录下的所有.svn版本控制文件

    这个批处理工具放到当前目录下,双击就会删除当前目录以及子目录下的所有svn 版本控制信息。

    svn获取文件.sh

    根据svn log需求号获取某个svn版本的文件,通过svnlog-svn diff 获取文件清单,然后根据svn export导出文件 TortoiseSvn可以直接手动导出需要的文件,但是svn 命令不支持 svn log svn diff svn export

    SVN与log日志的管理项目.rar

    svnTortoiseSVN-1.9.4.27285-x64-svn-1.9.4/VisualSVN-Server-3.4.1-x64服务端,客户端有助于上传文件和下载文件等,另外赠送javassh相关项目log日志的管理功能:1输出路径格式,大小分割等,有小伙伴喜欢文件管理的...

    svn安装文件及操作文件

    svn安装文件及操作文件

    使用StatSVN统计SVN版本库

    StatSVN是一个SVN版本库的静态分析工具,它能生成SVN log日志文件的html报表。这样能大概地评估工作量、开发效率、趋势,帮助项目管理。使用它之前下载SVN的命令行客户端,以便能自动化任务。下面是StatSVN的快速...

Global site tag (gtag.js) - Google Analytics