一、SVN簡介
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於CVS,它采用了分支管理系統,它的設計目標就是取代CVS。互聯網上很多版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多個人共同開發同一個項目,共用資源的目的。
二、目錄管理
brunch: 多人開發一個項目時,存放每個人的分支代碼,或從主干分支出來具有特殊功能的代碼;
tags: 一個項目肯定有不同的發布版本,當我們發布一個版本時,可以創建一個tags版本用來存放該發布的版本;
trunk: 該目錄里存放項目的主干代碼。
三、客戶端操作流程
用戶從SVN版本庫通過網絡“檢出(Checkout)”到本地工作副本(Working Copy)中,在本地副本中進行增加、修改、刪除等操作,完成后可“提交(Commit)”到版本庫中,如果本地工作副本中版本較系統版本庫過時,用戶使用“更新(Update)”功能與系統上版本保持一致,具體流程圖如下圖所示。
四、操作內容說明
1、 檢出操作
檢出(Checkout)是把服務器相應文件夾的內容下載到本地,並建立本地與服務器的關聯,然后可以在本地進行代碼管理。要求本地放置代碼的文件夾名稱與服務器上相應文件夾名稱一致。
2、導入操作
導入(Import)是把本地跟SVN無關聯的文件夾加載到服務器的相應路徑,並與服務器建立關聯。導入文件夾時需要填寫導入信息。
3、導出操作
導出(Export)是把服務器最新版本代碼或歷史版本代碼下載到本地某個路徑,下載下來的代碼是純粹干凈的代碼,里面沒有任何SVN殘留的信息
4、添加和刪除操作
添加(Add)是把本地關聯文件夾里面未關聯的內容轉換為關聯內容;刪除(Delete)是把本地正常關聯的內容轉換為非關聯內容。完成添加和刪除操作后,需要進行“提交(Commit)”才能更新到服務器上。
5、檢查修改操作
檢查修改(Check for modifications)是把提交前的文件修改、添加、刪除、無版本控制等非常清晰的呈現出來。
6、還原操作
還原(Revert)是把提交前的文件修改、添加、刪除等改動恢復到原樣,可以對文件夾操作、或對單個文件操作。
7、提交操作
執行修改、添加、刪除等操作后,為了使操作更新到服務器上,需要進行提交(Commit)操作。
8、更新操作
團隊編碼時,更新是比較常用的操作,更新是把服務器最新的程序更新到本地,對已做修改、刪除、添加等操作還未進行提交操作的文件不進行更新,把修改、刪除、添加操作的文件進行還原、或把修改操作的文件直接刪掉,然后便可更新
9、分支/標記(Branch/tag)
分支/標記是把選中文件或文件夾內容復制到Branch或tags路徑下面,新的路徑下面的文件與原文件的關系可以很清晰的查看
10、合並(Merge)
合並是把A文件的修改內容合並到B文件或把B文件的修改內容合並到A文件,便於代碼在一個地方修改完畢后直接移到需要的地方,相互合並的文件必須是通過“分支/標記”操作生成的文件與母文件。合並只是把修改內容移到工作副本,提交之后才有效
五、代碼管理
1. 代碼路徑結構
每個項目的軟件代碼管理對應一個獨立的總路徑或總文件夾,下面分級存放不同的內容。基於SVN的代碼管理文件夾結構示例如下圖。
2. 代碼操作規划
2-1、為了代碼管理安全、避免代碼誤操作,對相關軟件工程師進行權限設置。參與該軟件研發人員,開放“讀寫”全權限;參考借鑒該軟件人員,只開放“讀”權限;其他無需求人員,不開放權限。開發人員進行開發時,必須使用自己的賬戶登錄,禁止使用他人賬戶進行SVN各項操作。
2-2、新建項目路徑、導入新的軟件代碼,按上述SVN基本操作進行即可。把SVN中已有代碼移植到新的路徑下面時,用Branch/tags指令進行操作,這樣整個代碼的脈絡清晰。
2-3、開發工作之前先更新代碼,確認是在SVN服務器最新代碼上修改提交;不要長時間檢出項目不提交,減少因多人對同一個文件進行操作產生文件沖突;代碼修改調試完畢后提交,必須書寫清晰的標注;禁止提交軟件編譯產生的垃圾文件,避免別人在更新后可能與本地的環境產生沖突;不允許提交不能通過編譯的代碼;不允許提交自己不明白的代碼。