2011-04-11 157 views
8

是否有可能生成一個文件,其中包含對特定文件所做的所有更改的摘要(什麼,何時,由誰)?曾經在VSS中有過這樣的選擇(我認爲它被稱爲「歷史記錄」),對於追溯和追蹤誰做出某種變化以及何時變化而言,這非常棒。在svn中生成文件更改的歷史記錄

順便說一句,我使用TortoiseSVN

預先感謝您

+1

在'svn'它被稱爲'SVN log'。嘗試使用龜svn'顯示日誌'或類似的選項(我不記得確切)。應該有一些導出到文件選項。 – pajton 2011-04-11 14:04:16

+0

@pajton - 顯示日誌不顯示我想要的信息。它顯示在哪些修訂中對文件+「消息」進行了更改。但是我需要更詳細的信息,包括所有更改,何時制定以及由誰制定。 – 2011-04-11 15:18:05

回答

2

正如@pajton提到的,你可以使用svn log <filename>documentation提供了詳細信息/限制。

+0

@Jack Juiceson:Emzy與svn文檔的鏈接就是你需要的。我會引導你使用-g/- use-merge-history從任何分支合併到trunk中的信息。您還表示,您需要在對您的問題的評論中提供更多信息,請嘗試使用-v/- verbose選項。它應該提供關於誰和何時的更多信息。至於發生了什麼變化,那將是一個全新的命令。這兩個選項都在TortoiseSVN中作爲複選框。我很少使用烏龜,所以我不能給出確切的參考。 – jgifford25 2011-04-14 13:59:10

+0

@ jgifford25 - 我正在使用TortoiseSVN,我沒有在TortoiseSvn bin目錄中看到svn.exe以嘗試-v – 2011-04-17 08:37:02

+0

@Jack Juiceson:Tortoise沒有命令行客戶端。您可以從許多供應商處獲得命令行二進制文件。我認爲最容易獲得和安裝的地方是CollabNet:http://www.open.collab.net/downloads/subversion/。請記住,您只需要命令行客戶端,而不是整個套件(服務器,Apache和Edge附帶的其他工具)。 – jgifford25 2011-04-18 14:00:35

2

您可能會發現svn blame <filename>更有用,因爲它會告訴您某個文件的特定修訂版本是誰/什麼/何時。

+1

我知道責備,並大量使用它。然而有時候有些情況下,你記得你在文件中有一段代碼,有人刪除它,你想知道它是誰。在VSS天,我會生成歷史文件,然後搜索一段代碼,然後找到誰刪除了它,時間和原因。 – 2011-04-17 07:38:39

+0

@Jack您可能需要考慮強制委託人爲其提交添加適當的評論。日誌功能應該告訴你,或至少提供一個鏈接到Jira/Trac/...門票描述的變化。 – vickirk 2011-04-20 11:41:57

13

右鍵單擊資源管理器中的文件,然後「TortoiseSVN」,「顯示日誌」。

取消選中「隱藏無關的修改路徑」 取消「停止複製/重命名」 檢查「包含合併版本」 點擊「全部顯示」

現在,在上面的面板您的用戶名版本列表,日期和日誌。點擊您感興趣的版本,您可以在第二個窗格中看到完整的日誌。第三個窗格顯示所選修訂版本中已更改的每個文件。雙擊此窗格中的文件,您可以看到該文件中所做的更改。

如前所述,Tortoise有一個「責備」功能,通常非常有見地,但它只能顯示每一行源的最新編輯。如果有人刪除了行,你根本沒有看到他們的變化。

編輯:

如果你願意去命令行工具和bash,這個問題已經回答過:How can I view all historical changes to a file in SVN

在Windows PC上,以獲得最佳方式bash和命令行SVN是通過安裝Cygwin。

+0

「只顯示受影響的路徑」該死的,我希望我早些知道這一點,謝謝! – 2016-08-05 11:16:41

12

這裏的bendin的bash腳本的批處理文件翻譯How can I view all historical changes to a file in SVN

@echo off 

set file=%1 

if [%file%] == [] (
    echo Usage: "%0 <file>" 
    exit /b 
) 

rem first revision as full text 
for /F "tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
    svn log -r %%R %file% 
    svn cat -r %%R %file% 
    goto :diffs 
) 

:diffs 

rem remaining revisions as differences to previous revision 
for /F "skip=2 tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
    echo. 
    svn log -r %%R %file% 
    svn diff -c %%R %file% 
) 

注意,此批處理文件需要在命令行SVN客戶端(不TortoiseSVN的)在你的路徑。我個人使用SilkSVN,但有several

0

我只想補充一點,最近烏龜的版本還包括命令行工具,你只需要選擇其中的安裝

相關問題