2008-09-17 40 views
5

我在Windows上(使用WinCVS前端)使用CVS,並且希望在我們的自動構建過程中將最後一次檢查的詳細信息添加到電子郵件中,無論何時構建失敗,以便更容易修復。有誰知道CVS命令行選項來獲取上次檢查的詳細信息?

我需要知道已更改的文件,更改它們的用戶和評論。

我一直在努力解決命令行選項,但從來沒有得到準確的結果(要麼得到太多的結果,而不是從一個簽入,或從兩個星期前的一些隨機簽入的細節)

+0

自從我發佈這個問題後,我們已經升級到SVN,這使得這個問題變得很小(以及其他許多好處)。我很好地推薦升級! – 2010-10-27 19:44:14

回答

1

哇。

我忘了這件事有多困難。我之前做過的是兩個階段的過程。

首先,運行

cvs history -c -a -D "7 days ago" | 
    gawk '{ print "$1 == \"" $6 "\" && $2 == \"" $8 "/" $7 "\" { print \"" $2 " " $3 " " $6 " " $5 " " $8 "/" $7 "\"; next }" }' > /tmp/$$.awk 

聚集在過去7天的所有簽入的信息,並生成將用於創建已發送的電子郵件的一部分腳本。

然後,我在包含破損文件的目錄中搜索CVS/Entries文件以獲取更多信息。

將兩者混合在一起,讓我指責罪魁禍首,併發送電子郵件給他們,通知他們他們打破了構建。

對不起,這個答案不像我希望的那麼完整。

+1

假設啓用了可選的「歷史記錄」,否則「cvs [server aborted]:此存儲庫中未啓用歷史日誌記錄」 – 2010-06-09 15:58:18

1

CVS不提供此功能。但是,您可以通過購買FishEye的許可證或可能使用CVSTrac(注意:我還沒有嘗試過CVS Trac)來獲得它。

或者您可以遷移到SVN,SVN通過原子提交來提供此功能。您可以檢入一組文件並將其計爲單次提交。在CVS中,無論你做什麼,每個文件都是獨立的提交。

2

CVS不像其他版本控制系統那樣對變更集進行分組;每個文件都有自己的獨立版本號和歷史記錄。這是CVS的缺陷之一,它促使人們轉向更新的風險投資。

也就是說,有些方法可以實現您的目標。最簡單的可能是添加一個post-commit掛鉤來發送電子郵件或登錄到一個文件。然後,至少,您可以通過查看電子郵件發送的時間和進行更改的人員將一組提交分組在一起。

0

「cvs history -a -l」會讓你關閉嗎?顯示所有用戶上次每個項目的事件...

+0

這是我試過的,但它返回了〜40個結果! – 2008-09-17 19:23:04

1

我們通過perl腳本完成了轉儲更改日誌,並且您可以在第二個鏈接中獲得Windows版perl的免費版本。

Cvs2Cl script

Active Perl

0

CVSNT支持commit IDs,你可以代替日誌標籤使用,結賬或更新命令。提交的每一組文件(提交在CVSNT中都是原子的)都會收到自己的唯一ID。您只需首先通過cvs日誌確定上次簽入文件的commitid(您可以通過-d「1小時前」或類似方式限制輸出),然後查詢哪些其他文件具有該ID。

0

Eclipse內置了ChangeSet。您可以通過提交瀏覽上次更改(至少是傳入的更改或更新)。它通過按作者,提交消息和類似時間戳對提交進行分組來完成此操作。

這也適用於「比較/另一個分支或版本」,您可以選擇分支,標籤和日期。通過「同步視圖圖標」查看帶有「更改集」的彈出式菜單並親自查看。

編輯:這需要至少作爲查看器更改爲Eclipse,但取決於您需要比較和分組的頻率,可能不會太糟糕。如果你不想使用更多 - 只使用Eclipse的CVS。它應該有可能甚至得到一個像樣的大小的圖形cvs客戶端通過所有的插件rcp,但這肯定是超出範圍...

0

這不是一個解決的問題?我認爲CI Matrix上的任何支持CVS和電子郵件通知的工具都可以爲你做到這一點。

相關問題