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