SVN使用log,list,cat,diff命令查看特定文件版本信息
來(lái)源:http://blog.csdn.net/wn_hello/article/details/47295259
svn log??????????展示給你主要信息:每個(gè)版本附加在版本上的作者與日期信息和所有路徑修改。
?svn diff??????????顯示特定修改的行級(jí)詳細(xì)信息。
?svn cat??????????取得在特定版本的某一個(gè)文件顯示在當(dāng)前屏幕。
?svn list??????????顯示一個(gè)目錄在某一版本存在的文件。
找出一個(gè)文件或目錄的歷史信息,使用svn log命令,svn log將會(huì)提供你一條記錄,包括:誰(shuí)對(duì)文件或目錄作了修改、哪個(gè)修訂版本作了修改、修訂版本的日期和時(shí)間、還有如果你當(dāng)時(shí)提供了日志信息,也會(huì)顯示。
$ 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]注意日志信息缺省根據(jù)時(shí)間逆序排列,如果希望察看特定順序的一段修訂版本或者單一版本,使用--revision(-r) 選項(xiàng):
$ 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
也可以檢查單個(gè)文件或目錄的日志歷史,舉個(gè)例子:
$ svn log foo.c
…
$ svn log?http://foo.com/svn/trunk/code/foo.c
…
[/pre]這樣只會(huì)顯示這個(gè)工作文件(或者URL)做過(guò)修訂的版本的日志信息。
如果你希望得到目錄和文件更多的信息,你可以對(duì)svn log命令使用--verbose (-v)開關(guān),因?yàn)镾ubversion允許移動(dòng)和復(fù)制文件和目錄,所以跟蹤路徑修改非常重要,在詳細(xì)模式下,svn log輸出中會(huì)包括一個(gè)路徑修改的歷史:
$ 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也有一個(gè)--quiet (-q)選項(xiàng),會(huì)禁止日志信息的主要部分,當(dāng)與--verbose結(jié)合使用,僅會(huì)顯示修改的文件名。
為什么svn log給我一個(gè)空的回應(yīng)?
當(dāng)使用Subversion一些時(shí)間后,許多用戶會(huì)遇到這種情況:
$ svn log -r 2
------------------------------------------------------------------------
$
[/pre]乍一看,好像是一個(gè)錯(cuò)誤,但是想一下修訂版本號(hào)是作用在版本庫(kù)整體之上的,如果你沒(méi)有提供路徑,svn log會(huì)使用當(dāng)前目錄作為默認(rèn)的目標(biāo),所以,作為結(jié)果,如果你對(duì)一個(gè)本身和子目錄在指定版本到現(xiàn)在沒(méi)有做過(guò)修改的目錄運(yùn)行這個(gè)命令,你會(huì)得到空的日志。如果你希望察看某個(gè)版本做的修改的日志,只需要直接告訴svn log使用版本庫(kù)頂級(jí)的目錄作為參數(shù),例如svn log -r 2?http://svn.collab.net/repos/svn。
檢查歷史修改的詳情
我們已經(jīng)看過(guò)svn diff—使用標(biāo)準(zhǔn)區(qū)別文件格式顯示區(qū)別,它在提交前用來(lái)顯示本地工作拷貝與版本庫(kù)的區(qū)別。
事實(shí)上,svn diff有三種不同的用法:
- 檢查本地修改
- 比較工作拷貝與版本庫(kù)
- 比較版本庫(kù)與版本庫(kù)
像我們看到的,不使用任何參數(shù)調(diào)用時(shí), svn diff 將會(huì)比較你的工作文件與緩存在.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] 比較工作拷貝和版本庫(kù)
如果傳遞一個(gè)--revision(-r)參數(shù),你的工作拷貝會(huì)與指定的版本比較。
$ 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] 比較版本庫(kù)與版本庫(kù)
如果通過(guò)--revision (-r)傳遞兩個(gè)通過(guò)冒號(hào)分開的版本號(hào),這兩個(gè)版本會(huì)進(jìn)行比較。
$ 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]與前一個(gè)修訂版本比較更方便的辦法是使用--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]最后,即使你在本機(jī)沒(méi)有工作拷貝,還是可以比較版本庫(kù)的修訂版本,只需要在命令行中輸入合適的URL:
$ svn diff -c 5? http://svn.example.com/repos/example/trunk/text/rules.txt
…
$
[/pre] 瀏覽版本庫(kù)
通過(guò) svn cat 和 svn list ,你可以在未修改工作修訂版本的情況下查看文件和目錄的內(nèi)容,實(shí)際上,你甚至也不需要有一個(gè)工作拷貝。
??????????????svn cat????????????
如果你只是希望檢查一個(gè)過(guò)去的版本而不希望察看它們的區(qū)別,使用 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]你可以重定向輸出到一個(gè)文件:
$ svn cat -r 2 rules.txt > rules.txt.v2
$
[/pre] ??????????????svn list????????????
svn list 可以在不下載文件到本地目錄的情況下來(lái)察看目錄中的文件:
$ svn list? http://svn.collab.net/repos/svn
README
branches/
clients/
tags/
trunk/
[/pre]如果你希望察看詳細(xì)信息,你可以使用--verbose(-v) 參數(shù):
$ 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]這些列告訴你文件和目錄最后修改的修訂版本、做出修改的用戶、如果是文件還會(huì)有文件的大小,最后是修改日期和項(xiàng)目的名字。
警告
沒(méi)有任何參數(shù)的 svn list 命令缺省使用當(dāng)前工作拷貝的 版本庫(kù)URL ,而 不是 本地工作拷貝的目錄。畢竟,如果你希望列出本地目錄,你只需要使用 ls (或任何合理的非UNIX等價(jià)物)。
獲得舊的版本庫(kù)快照
除了以上的命令,你可以使用帶參數(shù)--revision的 svn update 和 svn checkout 來(lái)使整個(gè)工作拷貝“回到過(guò)去” [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 實(shí)例來(lái)“回退”修改,但是你不能提交修改,你獲得有新修訂版本的過(guò)時(shí)工作拷貝也是沒(méi)有用的。關(guān)于如何“回退”,我們可以看 “找回刪除的項(xiàng)目”一節(jié) 。
最后,如果你構(gòu)建了一個(gè)版本,并且希望從Subversion打包文件,但是你不希望有討厭的.svn目錄,這時(shí)你可以導(dǎo)出版本庫(kù)的一部分文件而沒(méi)有.svn目錄。就像 svn update 和 svn checkout ,你也可以傳遞--revision選項(xiàng)給 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
…
[/pre]
總結(jié)
以上是生活随笔為你收集整理的SVN使用log,list,cat,diff命令查看特定文件版本信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 砂锅(说一说砂锅的简介)
- 下一篇: 惊悚(说一说惊悚的简介)