svn log — 顯示提交日誌訊息。
預設目標是你的當前目錄的路徑,如果沒有提供參數,svn log會顯示當前目錄下的所有文件和目錄的日誌訊息,你可以通過指定路徑來精煉結果,一個或多個修訂版本,或者是任何兩個的組合。對於本地路徑的預設修訂版本範圍BASE:1。
如果你只是指定一個URL,就會打印這個URL上所有的日誌訊息,如果新增部分路徑,只有這條路徑下的URL訊息會被打印,URL預設的修訂版本範圍是HEAD:1。
svn log使用--verbose選項也會打印所有影響路徑的日誌訊息,使用--quiet選項不會打印日誌訊息正文字身(這與--verbose協調一致)。
每個日誌訊息只會打印一次,即使是那些明確請求不止一次的路徑,日誌會跟隨在拷貝過程中,使用--stop-on-copy可以關閉這個特性,可以用來監測分支點。
--revision (-r) REV --quiet (-q) --verbose (-v) --targets FILENAME --stop-on-copy --incremental --limit NUM --xml --username USER --password PASS --no-auth-cache --non-interactive --config-dir DIR
你可以在最上層目錄運行svn log看到工作副本中所有修改的路徑的日誌訊息:
$ svn log ------------------------------------------------------------------------ r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line Tweak. ------------------------------------------------------------------------ r17 | sally | 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003) | 2 lines …
檢驗一個特定文件所有的日誌訊息:
$ svn log foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
如果你手邊沒有工作副本,你可以查看一個URL的日誌:
$ svn log http://svn.red-bean.com/repos/test/foo.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
如果你希望查看某個URL下面不同的多個路徑,你可以使用URL [PATH...]語法。
$ svn log http://svn.red-bean.com/repos/test/ foo.c bar.c ------------------------------------------------------------------------ r32 | sally | 2003-01-13 00:43:13 -0600 (Mon, 13 Jan 2003) | 1 line Added defines. ------------------------------------------------------------------------ r31 | harry | 2003-01-10 12:25:08 -0600 (Fri, 10 Jan 2003) | 1 line Added new file bar.c ------------------------------------------------------------------------ r28 | sally | 2003-01-07 21:48:33 -0600 (Tue, 07 Jan 2003) | 3 lines …
當你想連接多個對日誌命令的調用結果,你會希望使用--incremental選項。svn log通常會在日誌訊息的開頭和每一小段間打印一行虛線,如果你對一段修訂版本運行svn log,你會得到下面的結果:
$ svn log -r 14:15 ------------------------------------------------------------------------ r14 | ... ------------------------------------------------------------------------ r15 | ... ------------------------------------------------------------------------
然而,如果你希望收集兩個不連續的日誌訊息到一個文件,你會這樣做:
$ svn log -r 14 > mylog $ svn log -r 19 >> mylog $ svn log -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | ... ------------------------------------------------------------------------ ------------------------------------------------------------------------ r19 | ... ------------------------------------------------------------------------ ------------------------------------------------------------------------ r27 | ... ------------------------------------------------------------------------
你可以使用incremental選項來避免兩行虛線帶來的混亂:
$ svn log --incremental -r 14 > mylog $ svn log --incremental -r 19 >> mylog $ svn log --incremental -r 27 >> mylog $ cat mylog ------------------------------------------------------------------------ r14 | ... ------------------------------------------------------------------------ r19 | ... ------------------------------------------------------------------------ r27 | ...
--incremental選項為--xml提供了一個相似的輸出控制。
如果你在特定路徑和修訂版本運行svn log,輸出結果為空
$ svn log -r 20 http://svn.red-bean.com/untouched.txt ------------------------------------------------------------------------
這只意味著這條路徑在那個修訂版本沒有修改,如果從版本庫的最上層目錄運行這個命令,或者是你知道那個修訂版本修改了那個文件,你可以明確的指定它:
$ svn log -r 20 touched.txt ------------------------------------------------------------------------ r20 | sally | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line Made a change. ------------------------------------------------------------------------