2009-06-30 75 views
14

通常,我們針對任何錯誤修復/補丁涉及多個文件中的更改,我們將一次性提交所有這些文件。列出在單個cvs commit中籤入的所有文件

在SVN中,對於每次提交(可能涉及多個文件),它會將整個存儲庫的修訂版號遞增1。因此,我們可以輕鬆鏈接所有在單次提交中執行的多個文件。

現在在CVS中遇到同樣情況的困難是它會逐個遞增所有文件的修訂版本號。假設提交涉及以下文件:

file1.c //作爲此提交的一部分分配的版本.. 1.5.10.2
file2.c //作爲此提交的一部分分配的修訂版本..1.41.10.1

併爲此提交給出的評論是「第一個錯誤修復」。

現在,作爲此提交的一部分檢入所有文件的唯一方法是通過搜索所有CVS日誌以評論「First Bug Fix」,並希望它僅返回上述兩個文件修訂版。

請分享您的看法,看看CVS中是否有更好的方法來跟蹤所有在單次提交中籤入的文件,而不是根據作爲提交一部分給出的評論進行中繼。

+1

看到CVS使「提交標識符」,不知道如果這是一個沒有標準extenstion左右。並不知道如何使用這些東西。 – 2009-06-30 20:51:31

回答

11

我認爲CVSps可能會做你正在尋找的東西。 「

」CVSps是一個用於從CVS存儲庫生成'patchset'信息的程序。在這種情況下,補丁集被定義爲對文件集合進行的一系列更改,並且同時進行所有更改(使用單個'cvs commit'命令),這些信息對於瞭解cvs項目發展的全貌很有價值,雖然cvs跟蹤修訂信息,但通常很難看到哪些更改是以原子方式提交給存儲庫的。

這cvsps依賴CVS客戶端上。確保你有支持rlog命令的cvs的正確版本(1.1.1)

+0

有趣。我不知道CVSps的工作原理是什麼?我想知道cvsps是否可以跨越不同的目錄工作,因爲時間戳可能不同?當然,CVSzilla增加了很多非常不錯的功能 - 它與CVSweb和Bugzilla聯繫起來確實提供了一個非常豐富的環境。 – 2009-06-30 21:05:27

+0

我看到cvsps可以通過標準的Ubuntu存儲庫獲得。標記這個答案向我傳授關於cvsps的感謝。 :) – 2009-06-30 21:06:29

2

CVS沒有固有的「事務」支持。

你需要一些額外的膠水來做到這一點。幸運的是,這一切都是爲您完成的,並且有一個名爲「cvszilla」的非常漂亮的擴展。

主頁是在這裏:

http://www.nyetwork.org/wiki/CVSZilla

這也綁到CVSweb,這是一個偉大的方式,通過一個基於Web的GUI通過你的CVS模塊瀏覽。

0

OK,我剛剛安裝cvsps並從頂層運行它。這是一個輸出示例...這是我模塊上幾百個補丁集之一。請注意,這確實可以跨不同的目錄樹工作。

--------------------- 
PatchSet 221   
Date: 2009/04/22 22:09:37 
Author: jlove-ext   
Branch: HEAD    
Tag: LCA_v1_0_0_0_v6  
Log:      
Bug: 45562    
Check the length of strings in messages. Namely: 

    * Logical server IDs cannot be more than 18 characters (forcing a 
    TCSE protocol requirement).          
    * Overall 'sid' (filter) search string length cannot be more than 
    500 (this is actually more than the technical maximum messages are 
    allowed, but is close).           

Alarm messages and are now not going to crash either as the alarm text 
is shortened if necessary by the LCA.         

Members: 
     catalogue/extractCmnAlarms.pl:1.2->1.3 
     programs/ldapControlAgent/LcaCommon.h:1.18->1.19 
     programs/ldapControlAgent/LcaUtils.cc:1.20->1.21 
     programs/ldapControlAgent/LcaUtils.h:1.6->1.7  
     programs/ldapControlAgent/LdapSession.cc:1.61->1.62 
     tests/cts-45562.txt:INITIAL->1.1 

所以,這可能確實做你想做的。好的,喬金。但是,如上所述,CVSzilla的功能遠不止於此:

  • Web瀏覽的CVS存儲庫(通過CVSweb)。
  • 可網頁瀏覽的交易。
  • 支持跨模塊的事務。
  • 生成CVS命令(使用'cvs -j')將補丁集合併到其他分支上。
  • 與bugzilla集成(交易會自動註冊以防止錯誤)。

如果所有你想要的只是補丁集信息,請使用cvsps。如果你打算長時間在大型項目中使用CVS,並且正在考慮使用bugzilla來進行bug跟蹤,那麼我會建議看看CVSzilla。

1

也許ANT CvsChangeLog任務是另一種選擇。見http://ant.apache.org/manual/Tasks/changelog.html。它提供簽入消息的日期和時間。您可以使用XSLT生成精美的報告 - 請嘗試ANT手冊頁底部的示例。

我知道它的答案已經晚了,但也許其他用戶會遇到像我一樣(搜索)並讚賞ANT集成。

相關問題