CVS 是一個老牌的版本控管軟體,N年前應該真的是很夯,甚至可能是第一個版本控管軟體,不過這幾年幾乎快被其他的東西取代掉了。 雖然覺得是已經快淘汰的東西,不過有工作上有需要用到,還是得研究一下。 今天主要是介紹,如何在CVS上取得需求異動清單。
基本上,以目前所看到的一些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
看參數的用法,只不過基於這重還不知道有沒有人在維護的東西,可能有時候,這文件也不見得會準,還是要實際使用看看才會知道。
沒有留言 :
張貼留言