版本管理-SVN本地版本管理


0. 引言

     使用工具是人與動物的基本區別,善用工具可以極大的提高效率,降低錯誤率。在PC軟件領域,有很多好用的工具,這些工具都是軟件工程重要的基礎設施。然而,嵌入式開發,在其代碼數量上,很多時候由於沒有那些層出不窮的框架和庫,所以代碼量相比小很多,另外嵌入式的運行載體決定了不可能運行大規模的程序,目標文件一般都是kB為單位,即使帶操作系統的嵌入式開發,目標代碼也常是MB級別。

     這些因素導致很多嵌入式開發者對代碼工具不太重視,直接手動管理代碼,習慣性的改動一次copy一個版本,幾天下來,要不是文件以日期為單位,每天一版或者一天有好幾個后綴版本,要不是就一路v1,v2,v3后綴備份… 一段時間備份下來,這些東西只有自己可以看懂,但是一旦放下幾天,某天又回頭要追溯哪個問題時,由於沒有修改記錄等原因,變得及其困難,自己也看不懂了。雖然公司都有服務器,但是涉及到多人開發情況下,服務器提交都非常慎重,一般的是做出一個階段性成果或者一個模塊測試之后才往服務器合並。大部分時間都是本地開發,一周往服務器commit一兩次。最終導致本機硬盤快速消耗,代碼依然很難追述到某個節點,尤其為一些驗證和嘗試工作而新開的版本,這些嘗試其實很有價值,但是最終被大量備份文件淹沒了,當硬盤快爆了的時候往往都是把所有備份全部刪掉,項目趕得急,根本無暇顧及那些有意義的研究和備份。

    其實這些都可以在本機用版本管理軟件很好的解決,本文就說說單機版的版本管理。做PC軟件的可以繞過,服務器倉庫不受地點限制,機器故障概率基本為零,比單機強多了,做嵌入式的朋友,或入行不深的學生和愛好者可以看看本文,畢竟經驗之談。

1.SVN本地版本管理

1.1 下載安裝Tortoise SVN

單機版本管理,Tortoise SVN就足夠了,如果多人合作項目,當然就直接使用Visual SVN 了,主要就是配置Visual SVN Server,都是傻瓜式的安裝,不再贅述。(本文只討論Windows平台)

1.2  代碼管理基礎操作

A. 新建代碼倉庫

1、新建文件夾,目錄和文件夾名稱最好都用英文;

2、打開文件夾,在空白處按下右鍵;

3、在彈出的菜單中選擇“Tortoise SVN - Create repository here”;

4、彈出對話框,提示創建成功,並自動在文件夾中創建了目錄結構;

5、在資源文件夾內,右鍵“Tortoise SVN – Repo browser”,然后復制代碼倉庫地址URL,其實就是本地的文件夾地址加了file://。

 

B.  導入項目(把項目加入代碼庫)

1、打開已有的項目文件夾,在空白處按下鼠標右鍵;

2、在彈出的菜單中選擇“TortoiseSVN - Import”;

3、選擇導入路徑file:///F:/repository,填寫備注信息,點擊“OK”開始導入;

4、導入完成后會彈出提示,可以查看導入的文件,點擊“OK”,完成導入。

 

C. 建立工作目錄(檢出)

1、新建工作目錄文件夾,在空白處按下鼠標右鍵;

2、在彈出的菜單中選擇“SVN Checkout...”;

3、在彈出的對話框中選擇庫目錄、工作目錄,點擊“OK”開始檢出;

4、彈出詳細信息對話框,導出完成后,點擊“OK”。

可以看到工作目錄中多出了版本管理庫中的文件,這些文件就是有版本控制的,對這些文件的修改可以保存到庫,也可以從庫里恢復舊版本的文件。

 

 

一般的,也可以在任何地方點擊右鍵,在彈出的菜單中選擇“SVN Checkout...”,然后修改檢出的文件的保存路徑。

 

D. 更新工作目錄

1.對於單機版本管理來說,這個問題基本可以忽略,除非你在好幾個地方做了check out然后提交了修改。然后某一天你又到了你常用的目錄下工作,然后提交修改,但是這時候你用的版本已經不是最新的了。

2.工作前更新文件是一個好習慣,通常在你對工作目錄進行修改前,為保證你的文件是最新的,需要進行更新操作;

3. 在工作目錄空白處點擊鼠標右鍵,選擇“SVN Update”;

4. 會彈出對話框開始更新,並顯示更新了哪些內容,庫版本是多少。下面就是我在另外一個目錄提交了版本,然后到workSpace目錄下,又提交一次update。

 

E.提交工作目錄(Commit、check in)

1、本地目錄做了修改,然后需要提交到代碼庫;

2、在工作目錄內的空白處或者目錄上點擊鼠標右鍵,選擇“SVN Commit”;

3、會彈出對話框,可以輸入備注信息,方便以后查看歷史記錄。

    顯示將要提交哪些文件,是什么類型改動,點擊“OK”開始提交,比如下圖是我在文件夾內加了add2.txt文件,然后提交顯示add類型改動;

4、彈出對話框顯示提交進度,完成后點擊“OK”完成。

 

若不是新加文件,而是修改了已有文件然后提交,會顯示文件修改。

 

F.版本回滾

      問題來了,最前面的引言說的,如何退回某一個版本。

     1.為了試驗更加清晰。我們先提交一次,做個記錄。提交時候的log寫為:測試版本回滾v7.

 

     2.修改文件,提交第二次,log為test changed 1。

 

 

   3. 修改文件,提交第三次。

 

  4. 版本回滾到v7.

   目前版本9,可以回到版本7。根據版本回滾.

 

 

當然,一般的都是根據提交時候的注釋回滾。找到某一版本,然后右鍵選擇Update item to revision 或者直接Check Out,兩者效果是一樣的。

 

 

G. 如何新加一個文件

如下,新建了兩個文件。

 

然后新加文件添加到代碼倉庫,告訴SVN,這兩個小弟也幫忙看管着。

右鍵“TortoiseSVN - add”,彈出對話框選擇要添加的文件。若直接在文件上單擊右鍵添加,那么這兩個文件會直接添加到版本庫,不會給出提示。

 

添加成功之后會紅色提示,表示和版本庫不一致,沒有同步。提交之后,紅色感嘆號會變成綠色鈎的標記。

提交之后,這兩個文件就在代碼倉庫有了一個備份,下次check out時候就會有這兩個文件。

同樣道理,要刪除文件也必須commit,讓SVN知道不再需要管理這個文件,下次check out時候他才不會出現這個文件。

但是,如果按照版本來找,還是可以在當前版本找到被刪除的文件的,這就是版本管理軟件的優勢。

 

若要取消剛才添加的文件,直接revert 即可,和添加的邏輯剛好相反。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM