2008-08-26 82 views
8

有一個遺留的CVS存儲庫,其中包含大量的目錄,子目錄和路徑。還有大量的分支和標籤不一定涵蓋所有路徑&文件 - 通常是一個子集。我怎樣才能找出哪個分支/標籤涵蓋了哪些文件和路徑?如何找出哪些CVS標籤覆蓋哪些文件和路徑?

CVS日誌已經提供了每個文件的標籤列表。該任務需要我將其轉換爲每個標記的文件。我在當前的WinCVS(CVSNT)實現中找不到這樣的功能。鑑於充足的空週期,我可以編寫一個Perl腳本來完成這個任務,算法並不複雜,但需要完成。

我會想象有些人需要這些信息並解決了這個問題。因此,我認爲應該是一個現成的(開源/免費)工具。

回答

7

要確定哪些標籤適用於一個特定的文件,請使用:

cvs log <filename> 

這將輸出文件的所有版本,什麼標籤已經被應用到的版本。

要確定單個標籤中包含哪些文件,我唯一能想到的就是使用標籤簽出並查看返回的文件。該命令是以下任何一種:

cvs update -r <tagname> 
cvs co <modulename> -r <tagname> 
cvs export <modulename> -r <tagname> 
0

我不知道任何可以幫助你的工具,但是如果你正在編寫自己的工具,我可以從一個頭腦中拯救你:CVS中的目錄不能被標記。只有他們中的文件纔有標籤(這是什麼決定了簽出特定標籤上的目錄時簽出的內容)。

2

您不必做實際的結帳。您可以使用-n選項來模擬此:

cvs -n co -rTagName ModuleName 

這將爲您提供模塊ModuleName中標記爲TagName的所有文件的名稱。

+0

無法獲得此作品。 CVS返回:這裏沒有版本;先運行'cvs checkout' – 2011-02-11 18:25:57

1

以下命令給出了標籤「yourTagName」中的文件列表。這些文件都標記爲新的,「yourTagName」中的修訂信息。

該命令會在2000-01-01和您的標記之間做一個差異,隨意使用更早的另一個日期。

cvs -q rdiff -s -D 2000-01-01 -r yourTagName 
11

要列出一個文件一個也可以做標記:

cvs status -v <file> 
4

上面引述的方法並沒有爲我

的cvs -q使用rdiff -s -D 2000-01 -01 -r yourTagName

但是經過大量的梅辛圍繞我已經意識到

CVS -q使用rdiff -s -D 2000-01- 01 -r yourTagName ModuleName

作品

相關問題