SVN 集中式版本管理工具
?
SVN : 集中式版本管理工具
checkout: 下載代碼, 只需要做一次
update : 更新代碼
commit :提交代碼
?
三. SVN服務器搭建及配置(了解)
一. 端口號
http 80 一般是http, 因為SVN一般都是公司內部才能訪問
https 443
?
二. 每次對服務器端做操作, 版本號都會提升
?
三. 安裝
1. 參加一個倉庫, 并配置用戶
2. 應該(虛擬機注意是橋接模式, 網絡是自動獲取ip), 獲取ip地址 (運行 --> cmd --> ipconfig --> 獲取192.168.xx的地址)
3. 在Ma從瀏覽器中更換svn的地址, 進行訪問
?
?四. 常見UNIX命令行的使用(掌握)
pwd : 查看當前目錄
cat : 在命令行中查看文件
?
?五. SVN基本操作(掌握)
?
一. 模擬多人開發
?
?一> .唐僧創建項目
1. cd 到指定文件夾下
2. 下載代碼(指定一個目錄跟服務器保持連接) :? svn checkout http://192.168.23.112/svn/QQ --username=tangseng --password=tangseng
3. 再次cd 到SVN管理目錄下, 千萬不要忘記
4. 創建項目 : touch Car.h (拿一個文件模擬一個項目)
5. 查看狀態: svn status ? status是將本地的代碼和服務器做對比, 不一樣的才會顯示出來
6. 添加文件的管理權: svn add Car.h
7. 提交本地文件給服務器: svn commit -m "初始化了項目, 添加了Car.h文件" ? -m 一定要寫, 以后查看版本時, 是通過注釋來區分的. / ""可以不寫, 是為了英文好區分注釋
8. 更新代碼 : svn update
---------------------------------
9. 刪除文件: 不能直接刪除, 否則up就回來 : svn delete 如來.h , 還需要提交
10. 恢復文件為最初的狀態: (本地被修改, 但是沒有提交服務器 / 文件被本地版本庫刪除了, 但是沒有提交到服務器) : svn revert 如來.h
11. 查看幫助: svn help ,會調出所有的命令
12. 查看日志 : svn log , 查看之前的版本記錄(備注一定要寫, 而且要寫的有意義)
13. 版本穿梭: svn update -r 10 回到第10個版本 , 可以查看之前的代碼, 然后想回到最新的代碼, 只要up一次, 即可
14. 告訴本地版本庫解決了沖突 : svn resolved Car.h
?
二> 悟空加入開發(老手)
1. cd 到指定文件夾下
2. 下載代碼(指定一個目錄跟服務器保持連接) :? svn checkout http://192.168.23.112/svn/QQ --username=tangseng --password=tangseng
3. 再次cd 到SVN管理目錄下, 千萬不要忘記
4. 正常開發, 該更新就更新, 該提交就提交
?
三> 八戒加入開發(新手)
1. cd 到指定文件夾下
2. 下載代碼(指定一個目錄跟服務器保持連接) :? svn checkout http://192.168.23.112/svn/QQ --username=bajie --password=bajie
3. 再次cd 到SVN管理目錄下, 千萬不要忘記
4. 正常開發, 該更新就更新, 該提交就提交
?
團隊開發, 就是, 寫完提交, 別人更新
?
二. 常見命令的簡寫
checkout : svn co
status : svn st
commit : svn ci
update : svn up
?
三. 常見狀態解釋
? : 文件在SVN管理的目錄下, 但是沒有被SVN所管理. 看見? , 記得add
A : 文件在SVN管理的目錄下, 并且, 已經被本地SVN版本庫管理, 看見A, 記得commit
D : 文件在本地刪除, 還需要提交
M : 文件在本地被修改過, 需要提交
G : 文件曾經發生過沖突, 然后被解決了
U : 文件被更新
C : 文件發生了沖突
?
?
四. 常見報錯:
1. is not a working copy : 說明沒有進入到SVN管理的目錄. 就進行了SVN的命令. 應該進入到正確目錄
?
2. xcrun: error: active developer path ("/Applications/Xcode 2.app/Contents/Developer") does not exist, use `xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools (or see `man xcode-select`)
解決方案: 當多個Xcode版本同時存在, 可能工具就混亂了. 需要選擇一下. 找Xcode --> 偏好設置 --> Locations --> command line 選擇一下即可
?
3.? is out of date : 文件過期 . 如果發生了沖突, 那么直接提交時, 會報此錯誤. 應該update.
?
五. 注意事項
1. 先更新, 再提交. (不會覆蓋掉剛剛寫的代碼, 因為修改的文件版本高于服務器版本, 不會被覆蓋.) 可以檢測到沖突, 這只是一個操作規范.
2. 每一個文件都有單獨的版本號, 24 - 25
3. 及時提交, 沒做完一個小板塊, 或者一個小功能就提交. 避免沖突
4. 如何避免沖突:? 分模塊, 溝通 .
?
?
六. 解決代碼沖突
1. 代碼沖突: 同一個文件, 同一行, 兩個不同的人修改并提交. 就會發生沖突
?
2. 更新時, 如果發生沖突時會報以下錯誤
Conflict discovered in '/Users/apple/Desktop/SVN演練/八戒/Weixin/Car.h'.
//常用
(p) postpone : 延遲處理(svn工具不會幫你做解決沖突的事情, 自己手動解決) (版本會發生改變, 所以解決完沖突需要提交)
(mc) mine-conflict : 使用我的代碼, 覆蓋服務器的代碼 . 還需要提交一次 (版本會發生改變, 所以需要提交)
(tc) theirs-conflict : 使用服務器的代碼(他們的), 丟棄我的代碼 (版本不會發生改變)
?
//不常用
(s) show all options : 展示所有的選項
(df) diff-full : 展示所有不同
(e) edit : 編輯, 在命令行中編輯
?
3. 發生沖突的文件會發生改變
<<<<<<< .mine ~? ======= 我的代碼
======= ~ >>>>>>> .r24? 服務器的代碼
?
<<<<<<< .mine
@property (nonatomic, strong) NSString *banana3; // 悟空增加了香蕉3=======
@property (nonatomic, strong) NSString *xiaomi; // 八戒增加了小米>>>>>>> .r24
?
4. 解決沖突的方案:
? ? 1. (建議)選p, 延遲解決
? ? 2. 刪除不認識的代碼(<< == >> ), 然后自己合并代碼
? ? 3. 告訴本地版本庫, 自己已經解決了沖突: svn resolved Car.h
? ? 4. 需要提交代碼 (其它人更新即可)
?
七. 使用第三方圖形化工具
http://192.168.23.112/svn/Weibo/trunk
1. 小提示: 使用Cornerstone時, 拷貝svn網址, Cornerstone會自動將地址填入界面內.
2. 使用Cornerstone, 應該先連接遠程倉庫(左下角), 然后點擊checkout下載代碼.
注意: checkout選擇目錄時, 應將底部svn版本選擇為1.7. 因為mac默認就是1.7版本. 如果版本過低, xcode會提示升級, 然后Cornerstone重啟一次即可
?
?
3. 忽略文件:
? ? 1. .xcuserstate 不要提交給服務器. 此文件記錄了用戶當前展示的文件, 及目錄展開結構
? ? 2. (非項目文件)data后綴的(還包括用戶斷點) 都可以忽略不提交
? ? 3. 通過工具, 先delete, 在commit, 再次編輯時就會出現, 最后選擇ignore
?
八. 使用Xcode集成SVN
1. checkout : 三種方式
? ? 1. xcode歡迎界面, 選擇第三個選項, 即可checkout
? ? 2. 選中xcode, 找偏好設置, 找賬戶, 左下角添加遠程倉庫
? ? 3.? 選中xcode, 找頂部的source control菜單, 選擇checkout (最簡單)
?
2. 常用快捷鍵
? ? 1. update : com + opt + x
? ? 2. commit : com + opt + c
?
3. xcode解決代碼沖突
? ? 只要更新, 一旦沖突, 就會有個界面提示選擇. 應該選擇下方的四個小按鈕, update, 最后commmit就可以了. (沒有提示resolved)
?
4. 如果將來寫代碼, 發現文件改的不像樣子, 可以直接丟棄修改
?
5. SB / Xib 發生沖突的解決方案: 需要右鍵查看源碼, 然后自己比對丟失的代碼.? 團隊開發中, 盡量避免界面發生沖突 (如果不小心移動了界面, 那么可以丟棄修改)
?九. SVN目錄結構
trunk : 開發主目錄
branch : 分支, 一般用于修復bug或者開發新功能.?
tags : 備份重大版本(一般可以備份上架AppStore的版本)
?
轉載于:https://www.cnblogs.com/yilizhijiaotianxiashao-yincaiersanshijianduo/p/5437124.html
總結
以上是生活随笔為你收集整理的SVN 集中式版本管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux Bond 技术学习资料
- 下一篇: overfit underfit