`

SVN的log,cat,list,diff的使用

    博客分类:
  • SVN
 
阅读更多

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

 

svn log
找出一个文件或目录的历史信息,使用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 log http://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 2 http://svn.collab.net/repos/svn。

 

svn diff
检查历史修改的详情
我们已经看过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 5 http://svn.example.com/repos/example/trunk/text/rules.txt

 

 

svn cat  和   svn list
[/pre]浏览版本库
通过svn cat和svn 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 list http://svn.collab.net/repos/svn
README
branches/
clients/
tags/
trunk/
[/pre]如果你希望察看详细信息,你可以使用--verbose(-v) 参数:
$ svn list -v http://svn.collab.net/repos/svn
  20620 harry            1084 Jul 13  2006 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 update和svn 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实例来“回退”修改,但是你不能提交修改,你获得有新修订版本的过时工作拷贝也是没有用的。关于如何“回退”,我们可以看“找回删除的项目”一节(http://www.subversion.org.cn/svnbook/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.resurrect)。
最后,如果你构建了一个版本,并且希望从Subversion打包文件,但是你不希望有讨厌的.svn目录,这时你可以导出版本库的一部分文件而没有.svn目录。就像svn update和svn checkout,你也可以传递--revision选项给svn export:
$ svn export http://svn.example.com/svn/repos1 # Exports latest revision
…
$ svn export http://svn.example.com/svn/repos1 -r 1729
# Exports revision r1729

 

分享到:
评论

相关推荐

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

    下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. ...

    SVN使用手册中文版.chm

    下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. ...

    Linux详细教程大全之SVN命令总结.docx

    Linux 详细教程大全之 SVN 命令总结 Linux 作为一个开源操作...本文档详细介绍了 SVN 的基本概念和常用命令,包括从版本库获取信息、从版本库到本地、从本地到版本库等,旨在帮助读者快速掌握 SVN 的使用方法和技巧。

    ubuntu SVN命令大全

    svn list svn://192.168.1.1/pro/domain ``` **功能说明**: - `svn list` 命令用于列出指定 URL 下的所有文件和目录。 #### 十四、Mkdir (创建目录) **命令格式**: - 在本地创建目录:`svn mkdir [目录路径]` -...

    svn命令在linux下的使用

    ### SVN命令在Linux下的使用详解 #### 一、SVN Checkout (检出) **命令格式:** `svn checkout [URL] [本地目录]` - **功能:** 将指定的版本库目录或文件检出到本地目录。 - **示例:** `svn checkout svn://192...

    linux下SVN常用命令

    svn list svn://192.168.1.1/pro/domain ``` 列出`svn://192.168.1.1/pro/domain`目录下的所有文件和子目录。 #### 十四、SVN Mkdir **命令格式:** ```shell svn mkdir [URL/路径] ``` **功能介绍:** 在远程版本...

    svn最常用命令与实例

    13. **List**: `svn list` 或 `svn ls`: 列出版本库中的文件和目录。 14. **Mkdir**: `svn mkdir`: 在版本库中创建新目录。例如,`svn mkdir newdirectory`. 15. **Revert**: `svn revert`: 撤销本地修改,恢复到...

    linux下svn命令大全.txt

    在Linux环境下,Subversion(简称SVN)是一个广泛使用的版本控制系统,用于管理代码库和文档。下面将详细解析从给定文件中提取的关键SVN命令及其功能,这将帮助你在Linux系统中更有效地管理和操作SVN仓库。 ### 1. ...

    SVN常用命令行

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪软件开发过程中的文件变更。它通过维护一个中心版本库来保存项目的各个版本历史,使开发者能够方便地协作并追踪代码的变化。 #### 二、SVN命令详解 ...

    svn 用法简单介绍.doc (绝对个人总结版)

    - **`svn cat`**: 查看SVN仓库中文件的内容。 - **`svn list`**: 列出目录的内容。 #### 四、小技巧 - 在所有SVN命令后面加上 `> logfilename`,可以将命令执行结果重定向到指定的文件中,方便后续查看和分析。 ...

    svn使用指南

    - `svn list`: 列出特定版本下的目录内容。 通过以上步骤,我们可以有效地利用SVN进行版本控制,实现团队间的高效协作。此外,对于更深入的学习,可以参考官方文档或在线教程以获得更多实用技巧。

    SVN常用操作命令

    可以先使用 `svn delete` 命令将文件标记为删除状态,再通过提交 (`svn commit`) 完成删除操作。 #### 8、查看日志 - **命令**: `svn log <路径>` - **示例**: `svn log test.php` - **说明**: 查看文件的所有修改...

    svn 介绍

    包括查看历史记录(`svn log`, `svn diff`, `svn cat`, `svn list`),清理工作区(`svn cleanup`),导入新项目(`svn import`)等。 **分支与合并** 1. **分支**:用于并行开发,`svn branch` 创建分支,`svn ...

    Linux下svn常用命令

    svn cat -r PREV filename > filename.PREV ``` **说明:** 此命令用于读取文件在指定版本中的内容,并将其输出到标准输出或重定向到另一个文件中。 以上是对 Linux 环境下 SVN 常用命令的详细介绍。通过这些命令,...

    SVN 常用命令

    - **命令**: `svn diff <file-or-directory>` 和 `svn diff -r m:n <file-or-directory>` - **功能**: 显示文件之间的差异。 - **示例**: - `svn diff test.php` - `svn diff -r 200:201 test.php` **应用场景**:...

    svn tutorial

    - SVN 提供了多种命令来查看历史记录,如 `svn log` 和 `svn diff`。 - **浏览仓库** - 用户可以使用 `svn list` 命令来查看仓库的内容。 - 也可以使用 `svn cat` 命令来查看特定版本的文件内容。 - **清理工作...

    svn 代码管理器的原理

    - **导出(Cat)、列表(List)**:查看文件内容和版本库结构。 - **清理(Cleanup)**:解决工作拷贝的异常状态。 - **导入(Import)**:将文件或目录一次性导入版本库。 **分支与合并** 分支允许开发者在不影响...

    Subversion 快速参考

    `svn cat` 显示文件在特定修订版的内容。 - `svncat -r revision file`: 显示文件在特定修订版的内容。 示例: ```bash svncat -r 892 foo.c ``` ##### 14. `svn list` 列出仓库中某个路径下的所有条目。 ...

Global site tag (gtag.js) - Google Analytics