<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-112  評論-73  文章-0  trackbacks-0

    http://www.svn8.com/SVNSY/20080505/576.html


    程序員編寫程序的過程中,每個程序都會有很多不同的版本,這就需要程序員很好的管理代碼,在需要的時間可以取出需要的版本,并且每個版本都有一個完整的說明。

    我們使用Sub Version(簡稱SVN)作為版本管理工具。這里著重介紹SVN作為跨平臺的多人協作使用方法。在多個程序員管理同一段代碼的過程中,版本的管理顯得尤為重要,使用SVN可以方便的進行分支、合并,記錄下所有的版本。

    基本配置

    在開始某項軟件、文檔的開發與撰寫時,首先由配置管理負責人建立SVN倉庫、用戶名及其權限,并通知相關人員SVN倉庫地址、SVN倉庫負責人。

    SVN倉庫的負責人把工程的tsvn:logminisize設置為1,以便強制注釋。設置方法:在你的工程文件夾右鍵->屬性中,進入Subversion標簽,選中tsvn: logminisize,確保復選框recursive選中,然后點擊Set按鈕把它的值設為1,其意思是指提交的注釋最短長度為一個字。如圖:

    2.1

    軟件配置

    l 忽略文件

    SVN [Setting][General]設置需要忽略的文件以便忽略掉一些臨時的、無用的文件常被忽略的文件有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak。每個程序員可以根據自己的需要進行修改忽略文件,上面只是使用VC++Tornado編程時常用的一些忽略文件。

    2.2

    以上說的忽略文件是指全局的忽略文件。SVN還能在特定的目錄中指定需要忽略的文件。忽略文件支持通配符。

    l 合并比較工具

    Merge Tool中可以選擇用來合并的工具,強烈推薦用Araxis Merge。在[Setting]->[Diff]中填入"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe";在[Setting]->[Merge]的選項中,填入"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %theirs %mine %merged ;其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"是指合并工具的路徑,%theirs %mine %merged分別指..將要合并到主干的分支,主干,及合并后的結果。

    2.3

    倉庫目錄結構

    SVN倉庫的負責人規劃好倉庫的目錄結構。推薦的目錄結構如下圖所示。

    倉庫的一級目錄只有兩個,分別為codedoc。其中,doc主要用來放置先期的文檔,code主要用來放置工程的代碼,也可以包含后期的文檔。

    倉庫的二級目錄只可以是branchtrunk兩個目錄,分別存放主干與分支。trunk目錄下直接存放工程文件。branch目錄下包括一些子目錄分別對應各個分支。

    2.4

    SVN倉庫中取出代碼時,一定不要把整個倉庫取出來而應該只取出trunk目錄或只取出branch下的某個分支目錄(比如上圖中的svn:\\code\branch\xw_051206

    一個項目會有多個人共同合作開發完成。基本流程是:

    l 各開發成員建立自己的分支,并在此分支上開發;

    l 各開發成員把分支合并到主干上并形成較為穩定的版本;

    l 各個成員重新從主干上建立新的分支,在此分支上開發(即回到第一步)

    l 循環往復,直到工程結束。

    下面我用一個例子來說明合作開發的基本流程。

    現在xblzj兩個開發人員要共同開發一個工程onlytest,其這個工程的主干的SVN倉庫地址如下圖。

    2.5

    xblzj分別在onlytest這個工程中建立兩個分支,分別為xb _051115lz_051115

    在這里分支命名要采用[姓名縮寫_6個數的日期_后綴(可選)]的形式,比如xb_051208_1xb_051212之類的。創建完分支后我們可以看到這個工程的目錄結構如下圖所示:

    2.6分支目錄

    建完之后, xblzj分別在本地取出對應的分支進行開發。

    程序到達一個比較穩定的階段,就需要把分支合并到主干上,下面講述一下合并的流程。

    在本節中繼續使用上一節中所示的工程與SVN倉庫講解。

    1.2.3.1 xblzj分別修改自己分支上的代碼

    現在主干上的test_SVN.txt是空文檔。

    xblzj修改提交后兩個分支中test_SVN.txt分別如下兩圖所示

    2.7 xb_051129分支下的test_SVN.txt

    2.8 lzj_051129分支下的test_SVN.txt

    1.2.3.2 xbxb_051129分支合并到主干

    xb先把主干check out到本地。然后在主干的目錄上右鍵選擇svn->merge,彈出如下窗口:

    2.9合并對話框

    此對話框的含義是把From指定的分支版本到To指定的分支版本之間的差異合并到主干上。

    在這里分支選的是xb_051129。版本號的選定方法是點擊From中的Show Log,在Log窗口中按住Ctrl鍵,點擊選擇"made a copy"之上的那個版本,以及最頂上的那個版本,如 2.11所示。然后點擊確定回到上圖中的對話框,會自動填寫FromTo中的Revision號。

    2.10選擇需要合并的版本

    然后直接點擊merge進行合并,你也可以通過dry run來看是不是兩者之間有差異。由于沒有其它人修改主干,所以合并的很順利,下圖是xb_051115與主干合并后的結果。合并完畢之后,由xb對主干進行提交。

    2.11合并后,主干上的test_SVN.txt


    1.2.3.3 lzjlzj_051129分支合并到主干,解決沖突

    xb合并完畢之后,lzj要將他的分支合并到主干上去,方法同上。但是由于xb已經修改過主干,所以產生了沖突,會彈出一個沖突對話框。雙擊對話框中的產生沖突的文件名,就可以調出工具對此文件進行合并,下圖是我們用merge工具顯示的界面。

    2.12

    l 首先比較第一個窗口與第二個窗口,把結果修改合并到第二個窗口。

    l 然后確保光標處于第二個窗口時,點擊上圖中紅色圈圈所示的按鈕。這樣會把第二個窗口的內容全部復制到第三個容口。之后保存,退出。

    l 然后在工程目錄上點右鍵,進行SVN->Resolved。這樣會刪除無用的臨時文件。

    l 最后提交所作的修改,并添加詳細的注釋。

    中的標簽

    CVS不同,使用SVN時不用專門為目錄添加標簽,因為SVN也對目錄進行版本管理。

    我們在提交時寫好注釋(比如重要的版本提交時使用051201之類的日期作為開頭),就可以通過注釋來查找比較重要的目錄版本號,相當于CVSVSS中的標簽。

    另外,每個工程都會有一個版本說明文件,通過此文件可以查找關鍵版本。

    你可以重命名、移動或刪除你的文件或文件夾,但請使用SVN進行這些操作,否則之前的版本信息會丟失。

    使用SVN刪除、移動與重命名文件夾的方法是在文件/文件夾上點右鍵進行SVN操作,或直接在資源瀏覽器中使用右鍵拖放(會彈出SVN選項)。

    文件的刪除、移動與重命名之前,必須保證工作目錄是最新的版本;進行這些操作之后,需要進行提交。

    1.3.3 版本的回退

    在代碼的編寫過程中,難免會有不盡人意的地方,你也許需要回退到某一個版本,但是在這個過程中可能有一些文件你想保留,也有一些文件你不想保留,這就牽扯到很復雜的版本管理過程,在這里給大家推薦幾種方法。

    1. 若是你編輯了工程,在沒有提交的前提下,你想放棄這些修改,你可以直接選擇revert就可以更新到工程的最新的版本。

    2. 若是你想退回到某一個版本,你就可以直接選擇update to reversion如圖,這樣我們就可以把我們的版本回退到你選中的版本去,這種情況下SVN并沒有顯示出有什么沖突,并且新建立的文件也還在,但是在這種情況下你并不能直接在你回退后的版本上進行編輯,因為SVN的版本控制還是在最新的主干上。我們需要update并解決沖突。

    3. 你可以直接選擇revert changes from this revision如圖,這樣的話你可以直接解決沖突并提交。不過這種方法的不足是,你新建的文件都沒有了,整個工程都回退到之前的版本了。

    4. 我推薦的一種方法是,直接export一個你需要的版本,然后用你export的版本覆蓋你的最新的版本,這樣你就可以不丟失你新建的文件,同時獲得headSVN控制文件。

    13

    每個工程會有很多個小模塊,當某個模塊達到穩定的時候,你就需要提交一次,以免寫下個模塊代碼的時候出現不可恢復的錯誤。

    每一次提交需要前,需要通過pclint檢查,保證是一個編譯沒有錯誤的版本。當提交比較穩定的版本的時候,同時要修改你的版本號。

    1.3.5 版本說明文件

    版本說明文件為xml表格,可用excel編輯,它會記錄下關鍵的版本信息。

    版本說明文件內容如下表。發布版本是指用戶對外公布的版本號,后文中有詳細描述;RevisionSVN內部的工程文件夾的版本號。一個發布版本可能對應多個Revision

    Technorati :

    posted on 2008-05-16 10:18 Libo 閱讀(4350) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久aⅴ免费观看| 91人成网站色www免费下载| 免费看少妇作爱视频| 亚洲日本在线观看网址| 96免费精品视频在线观看| 亚洲AV一宅男色影视| 久久久久久久99精品免费观看 | 好爽好紧好大的免费视频国产 | sss日本免费完整版在线观看| 久久久精品国产亚洲成人满18免费网站 | 国产免费久久精品99re丫y| 亚洲理论在线观看| 亚洲毛片在线免费观看| 国产精品亚洲午夜一区二区三区| 亚欧在线精品免费观看一区 | 亚洲日本一线产区和二线| 成年轻人网站色免费看| 亚洲欧洲专线一区| 全亚洲最新黄色特级网站 | 丁香花免费高清视频完整版| 亚洲AV无码一区二区三区人| 成人毛片免费视频| 国产偷国产偷亚洲高清人 | 亚洲精品在线免费观看| 成人免费午夜视频| 一级毛片视频免费观看| 亚洲人成网站在线观看播放| 日韩人妻无码精品久久免费一| 亚洲系列中文字幕| 免费的涩涩视频在线播放| 五月天婷婷免费视频| 亚洲av日韩av天堂影片精品| 一级女人18毛片免费| 国产成人亚洲精品电影| 亚洲av无码精品网站| 毛片基地免费视频a| 国产免费一级高清淫曰本片| 久久久无码精品亚洲日韩京东传媒| 成人免费毛片观看| 九九久久国产精品免费热6| 亚洲一区二区电影|