svn的使用
一、搭建服務(wù)器
在Windows環(huán)境中,我們一般使用TortoiseSVN來(lái)搭建svn環(huán)境。在Mac環(huán)境下,由于Mac自帶了svn的服務(wù)器端和客戶端功能,所以我們可以在不裝任何第三方軟件的前提下使用svn功能,不過(guò)還需做一下簡(jiǎn)單的配置。
1、創(chuàng)建代碼倉(cāng)庫(kù),用來(lái)存儲(chǔ)客戶端所上傳的代碼
先在桌面上面新建一個(gè)svn目錄,以后可以在svn目錄下面創(chuàng)建多個(gè)倉(cāng)庫(kù)目錄
打開終端,創(chuàng)建一個(gè)code倉(cāng)庫(kù)
svnadmin create /Users/gaokunpeng/Desktop/svn/code
2、配置svn的用戶權(quán)限
主要修改/svn/code/conf目錄下的三個(gè)文件
1)打開svnserve.conf,將下列配置項(xiàng)前面的#和空格都去掉
1. # anon-access = read
2. # auth-access = write
3.
4. # password-db = passwd
5.
6. # authz-db = authz
anon-access = read代表匿名訪問的時(shí)候是只讀的,若改為anon-access = none代表禁止匿名訪問,需要帳號(hào)密碼才能訪問
2)打開passwd,在[users]下面添加帳號(hào)和密碼,比如:
1. [users]
2. gkp = 123
3. zs = 123
帳號(hào)是gkp,密碼是123
3) 打開authz,配置用戶組和權(quán)限
我們可以將在passwd里添加的用戶分配到不同的用戶組里,以后的話,就可以對(duì)不同用戶組設(shè)置不同的權(quán)限,沒有必要對(duì)每個(gè)用戶進(jìn)行單獨(dú)設(shè)置權(quán)限。
在[groups]下面添加組名和用戶名,多個(gè)用戶之間用逗號(hào)(,)隔開
1. [groups]
2. topgroup=gkp,zs
3. 說(shuō)明gkp和zs都是屬于topgroup這個(gè)組的,接下來(lái)再進(jìn)行權(quán)限配置。
使用[/]代表svn服務(wù)器中的所有資源庫(kù)
1. [/]
2. @topgroup = rw
上面的配置說(shuō)明topgroup這個(gè)組中的所有用戶對(duì)所有資源庫(kù)都有讀寫(rw)權(quán)限,組名前面要用@
如果是用戶名,不用加@,比如gkp這個(gè)用戶有讀寫權(quán)限
1. [/]
2. gkp = rw
至于其他精細(xì)的權(quán)限控制,可以參考authz文件中的其他內(nèi)容
4) 啟動(dòng)svn服務(wù)器
前面配置了這么多,最關(guān)鍵還是看能否正常啟動(dòng)服務(wù)器,若啟動(dòng)不來(lái),前面做再多工作也是徒勞。
在終端輸入下列指令:svnserve -d -r /Users/gaokunpeng/Desktop/svn
或者輸入:svnserve -d -r /Users/gaokunpeng/Desktop/svn/code
沒有任何提示就說(shuō)明啟動(dòng)成功了
5)關(guān)閉svn服務(wù)器
如果你想要關(guān)閉svn服務(wù)器,最有效的辦法是打開實(shí)用工具里面的“活動(dòng)監(jiān)視器”
ps aux | grep svn
sudo kill -9 進(jìn)程號(hào)
綜合上述,我們就可以輕松搭建svn服務(wù)器環(huán)境了
二、代碼的管理
1、從本地導(dǎo)入代碼到服務(wù)器(第一次初始化導(dǎo)入)
在終端中輸入
svn import /Users/gaokunpeng/Desktop/limitFree svn://localhost/code/LimitFree --username=gkp --password=123 -m "初始化導(dǎo)入"
我解釋下指令的意思:將/Users/gaokunpeng/Desktop/limitFree中的所有內(nèi)容,上傳到服務(wù)器code倉(cāng)庫(kù)的LimitFree目錄下,后面雙引號(hào)中的"初始化導(dǎo)入"是注釋
2.從服務(wù)器端下載代碼到客戶端本地
在終端中輸入svn checkout svn://localhost/code --username=gkp --password=123 /Users/gaokunpeng/Desktop/manager/code
我解釋下指令的意思:將服務(wù)器中code倉(cāng)庫(kù)的內(nèi)容下載到 /Users/gaokunpeng/manager/code目錄中
3. 提交更改過(guò)的代碼到服務(wù)器
在步驟2中已經(jīng)將服務(wù)器端的代碼都下載到/Users/apple/Documents/code目錄中,現(xiàn)在修改下里面的一些代碼,然后提交這些修改到服務(wù)器
1> 打開終端,先定位到/Users/gaokunpeng/manager/code目錄,輸入:cd /Users/gaokunpeng/manager/code
2)打開文件,修改文件的內(nèi)容
vim Person.swift創(chuàng)建一個(gè)文件,然后輸入文字
svn status
? -> 新建的文件
A->添加到本地
M ->修改
vim Student.swift
svn add Person.swift
3) 輸入提交指令:svn commit -m "修改了main.m文件"
這個(gè)指令會(huì)將/Users/gaokunpeng/manager/code下的所有修改都同步到服務(wù)器端,假如這次我只修改了main.文件
可以看到終端的打印信息:
1. Adding Person.swift
2. Transmitting file data .
3. Committed revision 2.
4.更新服務(wù)器端的代碼到客戶端
這個(gè)應(yīng)該是最簡(jiǎn)單的指令了,在終端中定位到客戶端代碼目錄后,比如上面的/Users/gaokunpeng/manager/code目錄,然后再輸入指令:svn update
5.至于svn的其他用法,可以在終端輸入:svn help
三、多人開發(fā)
$ cd 經(jīng)理的工作目錄
# checkout服務(wù)器上的代碼倉(cāng)庫(kù)
$ svn co http://192.168.1.103/svn/TestLimit --username=manager --password=manager
提示:checkout(co)之后,命令行會(huì)記錄用戶名和密碼,后續(xù)操作不用再另行指定
# 查看本地代碼庫(kù)狀態(tài)
$ svn st
錯(cuò)誤提示:"is not a working copy",必須在svn的工作目錄下才能正確使用svn的命令
# 查看svn日志
$ svn log
# 查看某一個(gè)文件的日志
$ svn log filename
# 查看某一個(gè)文件某個(gè)版本的日志
$ svn log filename@1
# 切換到工作目錄
$ cd TestLimit
# 創(chuàng)建文件
$ touch main.c
# 打開并編寫文件內(nèi)容
$ open main.c
* 將文件提交到服務(wù)器
# 查看工作目錄狀態(tài)
$ svn st
# 將文件添加到本地版本庫(kù)中
$ svn add main.c
# 將文件提交到服務(wù)器的版本庫(kù)中
$ svn commit -m "添加了main.c文件"
# 添加文件 Person.h Person.m
$ touch Person.h Person.m
# 修改 Person.h Person.m
$ open Person.h
$ open Person.m
# 將 Person.h Person.m 添加到本地代碼庫(kù)
$ svn add Person.*
# 將內(nèi)容提交到服務(wù)器
$ svn commit -m "添加了Person類"
# 刪除文件
$ svn rm Person.h
# 提交刪除
$ svn commit -m "刪除了文件"
06. 撤銷修改
$ svn revert Person.m
07. 恢復(fù)到之前的某個(gè)版本
$ svn log
第一種解決方式
//回退到某個(gè)版本5
$ svn update -r 5
$ svn update
然后使用自己的代碼覆蓋電腦代碼
第二種解決方法
注意將svnserve.conf文件里面的
anon-access值read改成none,然后重啟一下svn服務(wù)器
//從11版本到5版本
$ svn merge -r 11:5 Person.swift
$ svn commit -m “回退到第五個(gè)版本”
08. 沖突解決
//如果碰到代碼沖突
先svn update
(p) postpone 對(duì)比
然后修改Person文件
然后輸入svn resolved Person.swift
(mc) mine-conflict 使用我的
(tc) theirs-conflict 使用對(duì)方的
(p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
四、CoreStone結(jié)合Xcode的使用
01. 安裝CornerStone軟件
02. 具體操作
1). 添加遠(yuǎn)程代碼倉(cāng)庫(kù)
2). 導(dǎo)出代碼庫(kù)到本地
3). 在本地目錄下使用Xcode新建項(xiàng)目
注意:不要勾選 git,兩套源代碼管理同時(shí)存在會(huì)發(fā)生沖突
4). 提交到代碼倉(cāng)庫(kù)
5). 其他用戶操作
03. 忽略一些不需要上傳的文件
04. SVN演練
1) 修改viewcontroller,提交
2) 添加Person類,提交
3) 代碼沖突演示
4) storyboard沖突演示
5) 利用storyboard查看歷史版本,回退
6) 利用xcode checkout 項(xiàng)目
05. 目錄規(guī)范
1) Trunk
目前項(xiàng)目正在開發(fā)的版本
通常進(jìn)入公司之后在該目錄下開發(fā)
2) Tags
存放已經(jīng)上線的重大版本
3) Branches
當(dāng)發(fā)生重大bug或者有新需求時(shí)
svn_TeacherGao: 高
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 在使用SVN更新文件時(shí),報(bào)了一個(gè)異常 svn: Error at entry 3 in entries file ...
- 昨天,我在等車,突然眼睛瞇了,眨了兩下,異物沒出來(lái)。正好車站旁有家醫(yī)院(某眼科醫(yī)院),我從來(lái)沒去過(guò)。想著,車來(lái)還有...
- 極速更迭的時(shí)代,讓我們領(lǐng)略到了前所未有的創(chuàng)新,總有人用意想不到的方式做出足夠驚艷的事情,小到一杯蛋糕,大到一個(gè)節(jié)目...