前言:
1.本文講的是SVN版本控制工具經常使用功能,包括命令行和界面化操做
2.若是想了解GIT使用方式,請移步這裏 git使用git
SVN使用環境
- 使用SVN管理源代碼,必須有2套環境
- 服務器
- 用來存儲客戶端上傳的源碼
- 通常都是在Windows環境下安裝Visual SVN Server
- 大部分狀況下,不是由開發人員搭建SVN服務器
- 客戶端
在Windows安裝Visual SVN Server
- 下載Visual SVN Server安裝包
- 打開安裝包 --> next --> 贊成協議 --> next --> 選擇默認選項(安裝SVN控制檯)--> next --> 選擇第一個按鈕(標準版)--> next --> location:安裝路徑 Repositories:倉庫路徑 server Port:端口 旁邊的https://選項不勾選(由於通常SVN都是在局域網,不會有安全問題)--> next -->Install --> 完成
建立SVN倉庫
- 打開Visual SVN Server
- 右擊Repositories --> 新建 --> Repository --> 設置倉庫名稱 --> 下一步 --> 選擇第一項Enpty repository(空的倉庫)--> 下一步 --> 設置訪問權限(Nobody has access <無人能訪問> 、All Subversion users have Read/Write access <全部人能夠讀寫> 、Customize permissions <自定義訪問> )由於是初始化倉庫,因此先設置爲沒人能訪問 --> 下一步 --> 完成
SVN倉庫配置
- 在新建的倉庫中新建2個文件夾(Code、Doc):新建 --> Folder --> 文件夾名稱 --> 完成
- 建立用戶:右擊Users --> Create user --> User name:用戶名 Password:密碼 Confirm password:確認密碼 --> 完成
- 建立用戶組(iOS、Android):右擊Groups --> Create Group --> Group name:組名 --> Add:增長成員 --> 完成
- 配置倉庫用戶權限:右擊倉庫 --> Properties --> Add:添加成員或組 --> Permissions:設置權限(NO Access <無權限> 、Read Only <只讀> 、Read/Write <可讀可寫> )--> 應用
- 配置完成
測試SVN倉庫鏈鏈接是否正常
- 鏈接倉庫分爲測試鏈接和遠程鏈接2種
- 測試鏈接:也叫本地鏈接,就是在搭建SVN的服務器上測試是否能夠鏈接,步驟以下:
- 遠程鏈接:測試完畢後就能夠將地址發放給成員使用了
- 服務器地址獲取方式
管理者初始化項目
- 將遠程倉庫下載到本地
- 進入咱們須要放置的文件件下
- $ cd /Users/yeshaojian/Desktop/SVN/mgr
- 鏈接並下載
- $ svn checkout 倉庫路徑 --username=用戶名 --password=密碼
- 下載成功後,在咱們的文件夾下會出現下載下來的倉庫,倉庫裏面有.svn的隱藏文件(顯示和隱藏mac上文件的方法)
- 進入本地倉庫
- $ cd 本地倉庫目錄(就是有.svn隱藏文件的目錄)
- 建立文件 main.m
- 查看文件狀態
- $ svn status
說明:
1.?表示該文件不受SVN管理
2.A表示該文件受SVN管理
3.M表示該文件被修改
- 將文件添加到svn管理中
- $ svn add main.m (也可以使用 $ svn add * <表示提交全部文件> )
- 將main.m文件提交到遠程倉庫
- $ svn commit main.m -m "註釋"
新成員使用SVN和多人開發
新成員篇:windows
- 第一次加入項目須要進行下面操做
- 獲取到SVN帳號與密碼與遠程倉庫路徑
- 鏈接遠程倉庫並將倉庫下載到本地
- 進入咱們須要放置的文件件下
- $ cd /Users/yeshaojian/Desktop/SVN/newTest
- 鏈接並下載
- $ svn checkout 倉庫路徑 --username=用戶名 --password=密碼
- 添加文件
- $ touch test1.m test2.m test3.m
- 查看文件狀態
- 將不受SVN管理的文件添加到管理中
- $ svn add test1.m test2.m test3.m
- 將文件提交到遠程倉庫
- $ svn commit test1.m test2.m test3.m -m "註釋" 或者 $ svn commit -m "註釋"(不寫表示所有提交)
- 在後面的開發中(多人開發)就只根據須要提交代碼就能夠了:
管理者篇:xcode
- 管理者加入開發步驟:
- 進入咱們須要放置的文件件下
- $ cd /Users/yeshaojian/Desktop/SVN/mgr
- 更新代碼
- 在test1.m文件中修改文件內容,上傳服務器
新成員篇:瀏覽器
- 進入咱們須要放置的文件件下
- $ cd /Users/yeshaojian/Desktop/SVN/newTest
- 新成員更新服務器上的代碼到本地
- 提交代碼到遠程倉庫
注意:每次要修改前先更新一下代碼再進行修改。安全
SVN命令行方式刪除文件
- SVN不能使用普通的右鍵刪除方式刪除文件
- 使用命令行刪除
- 爲確認文件被刪除,查看下狀態
- $ svn status
說明:
1.?表示該文件不受SVN管理
2.A表示該文件受SVN管理
3.M表示該文件被修改
4.D表示該文件已被刪除
- 提交更改
- $ svn commit -m "刪除了test3.m文件"
- 別的成員修改前須要更新代碼,才能繼續操做
SVN一些命令行簡寫
- 最經常使用的簡寫
- checkout --> co
- status --> st
- commit --> ci
- update --> up
SVN版本查看和回退
- SVN查看版本信息很簡單,使用下面指令就能夠
- SVN中有2中恢復或回退的狀況,下面會介紹:
- 狀況一:咱們本地修改了文件,但尚未提交到服務器
- 解決方法:$ svn revert 須要恢復的文件
- 狀況二:回退到之前的版本
- 首先要先更新本地版本到最新版
- $ svn update 版本
- 解決方法:
1.查看歷史版本
- $ svn log
2.合併版本
- $ svn merge -r版本:版本 .(好比如今最新版本爲9 --> $ svn merge -r9:r5 .)
說明:這邊會提示「U」標識,表示該文件爲合併狀態
注意:這邊最後面的 "." 要敲,表示當前目錄
- 提交到遠程服務器
- $ svn commit -m "註釋"
多人開發常見衝突解決
- 場景描述:多我的同時修改了同一個文件的同一個地方,且有人已經提交到遠程倉庫,後面的人還在繼續開發,且後面開發的人不是最新版本了,因此沒法提交(SVN中若是遠程服務器版本大於要提交的版本,就沒法提交),這樣的狀況下就須要經過下面的步驟解決:
- 先獲取最新版本(這時會提示衝突,並給出瞭解決方案,由於咱們修改了同一文件的同一個地方)
提示:在提示解決方案中,常常用到的是如下幾項
- (p) postpone:延遲處理 (最經常使用,先不解決)
- (mc) mine-conflict:以個人爲準,覆蓋掉倉庫
- (tc) theirs-conflict:以原創倉庫爲準,覆蓋掉本地版本
- (s) show all options:顯示全部選項
- 方式一:這邊選擇mc(以個人爲準)--> 回車
說明:若是看到顯示了大寫的 "G" 就說明衝突已經解決
- 提交
- svn commit -m "覆蓋了遠程倉庫代碼,解決衝突"
- 方式二:這邊選擇tc (以遠程版本爲準,覆蓋掉本地版本) --> 回車
- 提交
- svn commit -m "添加了某某屬性,但不成功,稍後添加"
注:由於這次提交不會有提示,由於本地版本和遠程版本同樣
- 方式三:這邊選擇p(延遲處理)--> 回車
- 這時咱們的本地倉庫內會多生成3個文件,這是咱們須要手動解決相應的問題
- 打開衝突文件,根據衝突提示進行相應修改
- 修改完成後,告訴遠程倉庫,咱們已經解決衝突
- 提交
- $ svn commit -m "手動解決了衝突"
SVN圖形化管理軟件(Cornerstone)使用
- 初始化項目管理
- 鏈接SVN服務器 --> 左下角(REPOSITORIES)欄的 「+」 號 --> 選擇HTTP Server --> 填寫相應信息後點擊Add
- 下載遠程倉庫內容到本地 --> 點擊左上角的Check out --> 選擇須要保存的位置 --> 打開下面的隱藏選項 --> 將Format選項調製最高(否則可能出現未知錯誤)--> check out --> 完成
- 建立項目 --> 文件存放位置爲SVN的工做區的Code中
- 忽略不須要管理的文件 --> Cornerstone --> 點擊Commit --> 在彈出的對話框中選擇ignore(忽略) --> 打開項目中的.xcodeproj --> project.xcworkspace --> 刪除2個xcuserdate文件 --> 提交 --> 修改項目中的任意地方(好比打個斷點或者聲明變量等) --> 運行項目 --> 回到Cornerstone --> 會發現剛剛刪除的2個文件又出現了 --> 分別右擊選擇Ignore --> 而後更新倉庫版本 --> 提交
- 測試文件是否忽略成功 --> 隨便修改任意文件 --> 點擊Source Control --> Commit --> 發現只有咱們修改的文件須要提交怎麼已經成功忽略文件
- 這樣項目的初始化就完成了,之後就只須要用XCode來進行版本控制操做就能夠了,不須要再進行忽略文件操做