Google Prettify

2015-03-25

如何取得CVS的檔案異動清單

CVS 是一個老牌的版本控管軟體,N年前應該真的是很夯,甚至可能是第一個版本控管軟體,不過這幾年幾乎快被其他的東西取代掉了。 雖然覺得是已經快淘汰的東西,不過有工作上有需要用到,還是得研究一下。 今天主要是介紹,如何在CVS上取得需求異動清單。

Google 上搜尋CVS已經變成藥局了(圖片引用自CVS Health官網 )

基本上,以目前所看到的一些GUI工具,似乎沒辦法很順利的提供這樣的功能,所以這個方法主要是採用命令列方式來進行。

我什麼都不想知道,只想要結果…

基本上我是不建議這樣子的做事態度。我們應該像孩童一樣,隨時保持著一顆亦子之心,隨時充滿著好奇心。 不過有時候,老闆跳腳了,工作逼急了,這也是沒辦法的事。

簡單來說就是下這樣的指令:

cvs -d ${CVS_ROOT} log  -d "2015-03-23 00:00:00<2015-03-25 00:00:00"  -SN -w${LOGIN_USER}

產出結果會是這樣:

Working file就是修改的檔案。注意-w${LOGIN_USER}必需連在一起

充滿好奇心的小朋友想知道的事

你是這樣的人嗎? 那請繼續看下去…

我剛輸了3小東西?

這指令的意思是查詢日期區間2015/3/23 ~ 2015/3/25,這段時間區間的log,而且是${LOIGN_USER}提交的東西。

所謂的CVS

就如同SVN一樣,CVS也是一種規格,也有許多版本的實作。 有時候我們在網路上找的一些文件,或許有這樣的功能,但下了指令後,才發現根本不行。這並不見得是文件有錯,只是很可能你所使用的實作版本,並不支援這樣的功能。

時間格式

CVS這裡的時間格式是採用 ISO 8601 而且沒有時區 。 網路上有文件說明可以下-z這個參數帶時區,不過在我的執行環境下是找不到這個參數。這很可能是之前講的是基於實作版本的差異。 大家在使用的時候,還是要去參照實作的官方文件。

那什麼是沒有時區

稍微岔開講一下時區的故事。

當你在看這篇文章的這個moment,地球上每個人的手錶上所指的時間都有些許的不一樣。 當然,或許這是因為你的錶和我的錶不是同一支所導致,但更多時候是因為我在台灣你在香港,地點不一樣的關係。 這就是時區。那麼每個人所在地的時區都不一樣,總得有個標準呀;不然當我告訴你:

「我這個檔案已經在2015/3/24 07:25:08 提交到版本控管了,你可以去看一下。」

結果你一看手錶,

「現在才 2015/3/24 06:25:08, 你在騙誰…?」

這樣的情況,那就莫妙奇妙了。 這就是時區造成的影響。 那麼我們要以什麼為標準呢?

標準就是UTC。 UTC(Coordinated Universal Time)是世界標準時間的縮寫,指得是英國那一帶的時間。 不過並不是專門指常見的格林威治。當提到格林威治的時間時,是用GMT,所以GMT才是指格林威治標準時間(Greenwich Mean Time,GMT)。 其實GMT也是一個標準,以實際數字上來說,2個是差不多;差異的地方除了一些歷史的因素外,還有一些天文與科學的原因,但是我們還是先到此打住吧! 我們還有其他的東西需要研究。

好,講完標準了,現在來講時區。

假設我現在人在台灣,如果英國那一帶(不是格林威治喔)的時間是2015/3/24 7:25 那麼台北的時間你可以記作2015-03-24T15:25+08:00 。沒錯,我現在手錶的時間是其實是下午3點多。我沒那麼勤奮,台灣時間早上7點25分提交程式。 雖然之前的範例區間是跨了48小時,但是其實我想查的是「台灣時間 2015/3/24 下午3點左右時,由我所提交的日誌」記錄,然後藉由查詢日誌,取得異動清單。

這樣當你了解CVS的日期格式之後,你可以正確的輸入他的時間區間了。 之前提到CVS log的時間 沒有時區 的概含,因為他的時間是UTC─世界標準時間。 所以當你在查詢的時候,也必需要自己換回UTC的時區。

cvs -d ${CVS_ROOT} log   -d "2015-03-24 07:00:00<2015-03-24 08:00:00"  -SN -w%{LOGIN_USER}

參數-d的另外用法

-d是指定時間區間。 也有其他的用法:

-d "10 min ago"  # 10分鐘以前
-d "10 min"      # 10分鐘以內
-d "2015-03-24<" # 超過 2015/3/24
-d "<2005-10-01" # 2015/3/24 以前

另存新檔

你可以將這些產出結果另存檔案

${剛才輸入的一連串指令} > chage_list.txt

>是將輸出結果轉向。 Linux上很常用到這樣的指令。

結論

詳細的參數,可以參考線上文件,或是直接下--help看參數的用法,只不過基於這重還不知道有沒有人在維護的東西,可能有時候,這文件也不見得會準,還是要實際使用看看才會知道。

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。