如何在Qt中使用CVS

2022-04-12 12:06:27 字數 1785 閱讀 4679

大家都知道團隊專案中常常要使用版本控制系統來對**進行版本管理和對多人協作。不過有時候個人專案也需要版本控制。去年暑假的時候,記得我當時在為我所在學校的linux使用者編寫乙個802.1x協議認證客戶端,很快問題來了,因為是初次做像樣一點的東西,在軟體介面等方面又有比較多的要求,經常發現各種各樣的bug,於是三天之後,我建立了乙個日誌檔案來記錄各種修改、各種問題和一些編寫過程中產生的想法,但是這種方法非常費勁,而且各種修改記錄……有時候都不知道自己改到哪兒了,當開啟工程發現上次的修改發生嚴重問題的時候,那真是乙個欲哭無淚啊,這時候我隱約感覺到,我需要使用版本控制系統,但是因為學習關係一直沒有空來學。

版本控制系統常用的有git,mercurial,svn,cvs,以及微軟的sourcesafe等,qt預設似乎支援git,可惜我先學習的是rcs,所以順手就學了cvs。cvs是從rcs發展而來的乙個歷史比較久的版本控制系統,幾乎覆蓋了版本控制系統應有的所有功能。qt提供對git,mercurial,perforce,svn以及cvs的支援,也就是說,配置好以後,無須命令列操作就可以方便的使用這些版本系統了。

因為我現在還沒有用到過cvs伺服器,所以這裡演示的也只是使用本地資料夾作為倉庫的情況。這裡假設你已經懂得使用cvs的基本命令。

1.將工程匯入cvs倉庫

我這裡有乙個掃雷程式,匯入倉庫建立專案:

cvs -d /home/tyh/repository/ import -m"掃雷初步版本,尚需要增加掃雷英雄榜" qtmine qtmine initial

在位於/home/tyh/repository的倉庫中建立了乙個叫做qtmine的工程,並將當前資料夾內的內容匯入工程倉庫

2.通過qt獲取倉庫中的工程並進行修改

執行qt creator,在歡迎介面中點選右下方的「create project」按鈕,在彈出的如下對話方塊中,選擇project from version control-> cvs checkout

choose之後,彈出如下對話方塊,repository是指倉庫中專案的位置,如果未指定cvsroot,那麼這裡的repository可能就要寫得長一點了,如果已經設定cvsroot,那麼直接寫倉庫中工程的名字即可。這裡填寫qtmine,path一欄是指工程簽出到哪乙個資料夾,譬如這裡/home/tyh/desk,那麼簽出之後,就會將簽出的資料夾放到/home/tyh/desk中了。

接下來,就可以看到工程已經成功載入到qt creator中,就可以像正常的工程一樣修改啦!

3.在tools->cvs選單中就可以看到各種指令了,在qt creator進行的正常的新增/刪除檔案等也無需繁瑣的指令,只需回答簡單乙個問題確認以下就可以將修改對映到cvs中。

注意:為了減少不必要的檔案,建議最初的工程建立時採用 shadow build,這樣編譯的中間檔案(包括makefile,moc*.cpp,*.o,可執行檔案等)都會放到乙個  工程名-build-desktop的資料夾中,自然也就不必因為中間檔案的修改而進行頻繁的嵌入/簽出工作了。

cvs目前的配置已經基本可以自動識別各種二進位制檔案,自然也就無須對檔案等費心了。不過使用過程中發現,對於qt的資源檔案,qt creator只負責在它的工程檢視中的檔案,例如將資源加入到qrc檔案裡,那麼最後qt creator更新到cvs中的只是qrc檔案,新增加的檔案並沒有籤進去。所以說這些不歸qt creator直接管轄的檔案,還是要使用命令手動把它們新增到倉庫中。

如何在AndroidStudio中使用AIDL

本章節介紹如何在androidstudio中使用aidl 2.在aidl下建立乙個包,包裡建立乙個 aidl檔案,右鍵aidl new aidl aidl file 紅框就是建立完成後的樣子 3.在aidl檔案寫要被呼叫的方法,此方法不能有許可權修飾符 4.首先build下,然後建立乙個servic...

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 建立sequence的語法很簡單,...

如何在Oracle中使用Sequence

sql server可以自增字段,但是oracle中在建表的時候可沒有這個選項,但是可以通過觸發器 trigger 或者序列 sequence 來實現,本文主要講述sequence。二者的區別oracle中自增字段的兩種方法的比較 trigger和sequence 在oracle中,沒有象ms sq...