鍵入svn log
在命令行上吐出一個令人難以置信的漫長而無用的列表。我不知道爲什麼這是默認設置。如果我想閱讀(甚至可以閱讀)終端上的300個條目,我不介意鍵入svn log --full
或類似的東西。您如何看到最近的SVN日誌條目?
也許SVN傢伙想我想將該輸出提供給另一個程序。但是,如果是這種情況,那麼對程序進行更詳細的調用會更有意義 - 而不是終端用戶。
無論如何,我怎樣才能看到最近的5個或10個條目最近的活動,看看有什麼變化?
鍵入svn log
在命令行上吐出一個令人難以置信的漫長而無用的列表。我不知道爲什麼這是默認設置。如果我想閱讀(甚至可以閱讀)終端上的300個條目,我不介意鍵入svn log --full
或類似的東西。您如何看到最近的SVN日誌條目?
也許SVN傢伙想我想將該輸出提供給另一個程序。但是,如果是這種情況,那麼對程序進行更詳細的調用會更有意義 - 而不是終端用戶。
無論如何,我怎樣才能看到最近的5個或10個條目最近的活動,看看有什麼變化?
limit
選項,如:
svn log --limit 4
svn log -l 4
只有最後4項
管通過less
或其他尋呼機輸出:
svn log | less
如果您有> 23k版本,您仍然會等待約20秒才能看到第一個條目(以及何時不使用詳細日誌)。但它很好 - 最近在頂部顯示。並且比TortoiseSVN的每次100個分頁更好!當你想走得更遠時。 – 2012-11-14 20:42:34
況且什麼Bert F said,很多命令,包括log
有-r
(或--revision
)選項。以下是使用此選項可以顯示修訂的範圍一些實際的例子:
要列出按升序排列的一切:
svn log -r 1:HEAD
降序排列列出一切:
svn log -r HEAD:1
要列出一切從第十三個到目前檢查出的修訂版本的基數從小到大排列:
svn log -r 13:BASE
把一切給定日期之間:
svn log -r {2011-02-02}:{2011-02-03}
可以將所有上述表達式組合與--limit
選項,這樣你可以有要輸出的一個非常精細的控制。有關這些-r
表達式的更多信息,請參閱svn help log
或書中的相關章節Version Control with Subversion
我喜歡使用-v
作爲詳細模式。
它會給你提交ID,評論和所有受影響的文件。輸出
svn log -v --limit 4
例子:
I added some migrations and deleted a test xml file ------------------------------------------------------------------------ r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed paths: A /trunk/java/App/src/database/support A /trunk/java/App/src/database/support/MIGRATE A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql D /trunk/java/App/src/code/test.xml
詳細選項非常有用 – 2012-09-02 21:03:30
要添加到其他人所說,你也可以在你的.bashrc或.bash_aliases文件中創建一個別名:
alias svnlog='svn log -l 30 | less'
或任何你想要的作爲你的默認
但svn日誌仍然是相反的順序,即最近的輸入是首先輸出,滾動我的終端的頂部,然後走了。我真的想要參見最後的條目,即排序順序必須按時間順序排列。唯一能做到這一點的命令似乎是svn log -r 1:HEAD
,但是對於包含10000個條目的存儲庫來說,這會花費太長時間。我想出這樣的:
按時間順序顯示最近10項顛覆:
svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
如果有人在看着這個老問題,一個方便的命令來查看你上次更新中的更改:
svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v
LE(感謝蓋瑞評論)
同樣的事情,但更短,更符合邏輯:
svn log -r BASE:HEAD -v
正如你已經注意到svn log
命令不帶任何參數運行顯示,涉及到您指定的URL或到運行該命令的工作拷貝文件夾的所有日誌消息。
你總是可以細化/限制svn log
結果:
svn log --limit NUM
將只顯示修訂的第一個NUM,svn log --revision REV1(:REV2)
將顯示日誌消息REV1修訂或REV1 - REV2範圍,svn log --search
將顯示與您指定的搜索模式相匹配的修訂(該命令在Subversion 1.8和更高版本的客戶端中可用)。您可以通過
這個答案是在關於Subversion的子命令選項有更多的問題執導。對於每個可用的子命令(即添加,日誌,狀態...),只需添加--help
選項即可顯示可用於子命令的可用選項的完整列表以及如何使用它們的示例。下面的代碼片段是直接從svn log --help
命令輸出的「示例」部分下采取:
Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
svn log -l 5 -v
呀,真的應該像,呃,'混帳log`。 – 2014-08-24 03:49:31