svn安装和使用
Subversion安裝和使用
Subversion(SVN)是優(yōu)秀的版本控制工具,其具體的的優(yōu)點(diǎn)和詳細(xì)介紹,這里就不再多說.SVN分為客戶端和服務(wù)器端,一般服務(wù)器端安裝在服務(wù)器上,我們開發(fā)者用的都是客戶端。TortoiseSVN是客戶端,VisualSVN是服務(wù)器。其實(shí)對于類似的可以延伸,一般牽扯到服務(wù)器的,往往都會有對應(yīng)的客戶端,在使用的時候應(yīng)注意這些。
整理:www.cnblogs.com/xiaobaihome…和blog.csdn.net/windone0109…
首先來下載和搭建SVN服務(wù)器.
現(xiàn)在Subversion已經(jīng)遷移到apache網(wǎng)站上了,下載地址:
subversion.apache.org/packages.ht…
這是二進(jìn)制文件包的下載地址,你可在左側(cè)的導(dǎo)航欄找到源代碼,文檔的下載地址.
windows操作系統(tǒng)下面的二進(jìn)制文件包一共有5種,如圖:
個人認(rèn)為最好用VisualSVN server 服務(wù)端和 TortoiseSVN客戶端搭配使用.
點(diǎn)開上面的VisualSVN連接,下載VisualSVN server,如圖:
然后下載TortoiseSVN客戶端,官網(wǎng)下載地址:tortoisesvn.net/downloads.h…
注意下載跟你電腦匹配的安裝包,在頁面的下面你還可以找到語言包,如圖:
下載完成后,應(yīng)該有這些安裝包,如圖:
TortoiseSVN安裝包和簡體中文語言包
VisualSVN server安裝包
先安裝VisualSVN server的安裝包,雙擊VisualSVN server安裝包,如圖:
點(diǎn)Next,進(jìn)入下一步,如圖:
點(diǎn)同意,進(jìn)圖下一步,如圖:
選擇上面一個選項(xiàng),點(diǎn)Next,進(jìn)入下一步,如圖:
Location是指VisualSVN Server的安裝目錄,Repositorys是指定你的版本庫目錄.Server Port指定一個端口,Use secure connection勾山表示使用安全連接,Use Subversion authentication 表示使用Subversion自己的用戶認(rèn)證.點(diǎn)擊Next,進(jìn)入下一步,如圖:
點(diǎn)Install,進(jìn)入下一步,如圖:
等待安裝完成,如圖:
安裝完成后,啟動VisualSVN Server Manager,如圖:
接下來我們安裝TortoiseSVN,雙擊安裝包,進(jìn)入下一步.如圖:
點(diǎn)擊Next,進(jìn)入下一步,如圖:
選擇接受,然后點(diǎn)擊Next,進(jìn)入下一步,如圖:
選擇安裝路徑,然后點(diǎn)擊Next,進(jìn)入下一步,如圖:
點(diǎn)擊Install,開始安裝,如圖:
等待安裝完成,安裝完成后如圖:
接下來我們安裝簡體中文語言包,這個非常簡單,一路Next就行,就不截圖了.語言包安裝完成以后在桌面任意空白地方單擊鼠標(biāo)右鍵,會在右鍵菜單里找到SVN,如圖:
選擇設(shè)置,進(jìn)入下一步,如圖:
在右邊的語言里面選擇簡體中文,然后點(diǎn)擊應(yīng)用,確定,漢化即完成,如圖:
到這里,服務(wù)端和客戶端都已經(jīng)安裝完畢。安裝完成后,這只是第一步,我們還需要在服務(wù)器上做配置,比如導(dǎo)入項(xiàng)目,建立用戶......
首先打開VisualSVN Server Manager,如圖:
可以在窗口的右邊看到版本庫的一些信息,比如狀態(tài),日志,用戶認(rèn)證,版本庫等.要建立版本庫,需要右鍵單擊左邊窗口的Repositores,如圖:
在彈出的右鍵菜單中選擇Create New Repository或者新建->Repository,進(jìn)入下一步:
輸入版本庫名稱,勾上Create default structure復(fù)選框(推薦這么做).點(diǎn)擊OK,版本庫就創(chuàng)建好了,版本庫中會默認(rèn)建立trunk,branches,tags三個文件夾,如圖:
這時候我們將項(xiàng)目導(dǎo)入到版本庫中,找到你的項(xiàng)目文件夾,在項(xiàng)目文件夾上點(diǎn)擊鼠標(biāo)右鍵,找到SVN菜單,選擇導(dǎo)入,如圖:
在彈出的對話框中填上版本庫URL,這個URL可以從VisualSVN Server Manager中獲取,在你的版本庫上單擊右鍵,選擇Copy URL to Clipboard,這樣就把版本庫URL復(fù)制到你的剪貼版了.如圖:
將復(fù)制的版本庫URL粘貼上,在URL后面加上trunk子路徑.然后在導(dǎo)入信息里面填上導(dǎo)入信息"導(dǎo)入項(xiàng)目到版本庫".如圖:
點(diǎn)擊確定,所選中的項(xiàng)目就會被導(dǎo)入到版本庫中.如圖:
項(xiàng)目導(dǎo)入到版本庫以后,不能隨便讓誰都能夠讀寫版本庫,所以需要建立用戶組和用戶.
在VisualSVN Server Manager窗口的左側(cè)右鍵單擊用戶組,選擇Create User或者新建->User,如圖:
在彈出的對話框中填寫User name和Password,然后點(diǎn)擊OK,如圖:
用相同的方式分別創(chuàng)建用戶Develpoer1,Develpoer2,Develpoer3,Test1,Test2,Manger六個用戶,分別代表3個開發(fā)人員,兩個測試人員和一個項(xiàng)目經(jīng)理,如圖:
然后我們建立用戶組,在VisualSVN Server Manager窗口的左側(cè)右鍵單擊用戶組,選擇Create Group或者新建->Group,如圖:
在彈出窗口中填寫Group name為Developers,然后點(diǎn)Add按鈕,在彈出的窗口中選擇三個Developer,加入到這個組,然后點(diǎn)Ok,如圖:
用相同的方式創(chuàng)建組Managers,Testers,如圖:
接下來我們給用戶組設(shè)置權(quán)限,在MyRepository上單擊右鍵,選擇屬性,如圖:
在彈出的對話框中,選擇Security選項(xiàng)卡,點(diǎn)擊Add按鈕,選中Developers,Managers,Testers三個組,然后添加進(jìn)來,給Developers,Managers權(quán)限設(shè)置為Read/Write,Tester權(quán)限設(shè)置為Read Only,如圖:
到此,服務(wù)端就完成了.
接下來,我們用客戶端去檢出代碼,在桌面空白處單擊右鍵,選擇SVN檢出,在彈出的對話框中填寫版本庫URL(具體獲取方式,上面講上傳項(xiàng)目到版本庫的時候講過),選擇檢出目錄,點(diǎn)擊確定.如圖:
開始檢出項(xiàng)目,如圖:
檢出完成之后,我們打開工作副本文件夾,會看到所有文件和文件夾都有一個綠色的√.如圖:
至此,創(chuàng)建版本庫和使用TortoiseSVN導(dǎo)入項(xiàng)目,檢出項(xiàng)目已經(jīng)介紹完畢.接下來看下SVN的相關(guān)操作。
添加文件
在檢出的工作副本中添加一個Readme.txt文本文件,這時候這個文本文件會顯示為沒有版本控制的狀態(tài),如圖:
這時候,你需要告知TortoiseSVN你的操作,如圖:
加入以后,你的文件會變成這個狀態(tài),如圖:
這時候使用TortoiseSVN進(jìn)行提交.這樣別人就能看到你所做的更改了,如圖.
修改文件
使用TortoiseSVN更新,修改工作副本中的Readme.txt文件,加入"hello world!",然后保存,你會發(fā)現(xiàn)Readme.txt文件的圖標(biāo)改變了,如圖:
這個紅色的嘆號代表這個文件被修改了,這時候,提交更改,其他人即可看到你的更改.
重命名文件
使用TortoiseSVN更新,重命名工作副本中的Readme.txt文件為"Readme1.txt',然后保存,你會發(fā)現(xiàn)Readme.txt文件的圖標(biāo)改變了,如圖:
更添加文件一個道理,這時候你需要告訴TortoiseSVN你的操作,如圖:
加入以后,提交,這時候版本庫中的Readme.txt文件將會被重命名為"Readme1.txt".
刪除文件
使用TortoiseSVN更新,使用TortoiseSVN刪除工作副本中的Readme.txt文件,然后提交,版本庫中的相應(yīng)文件即被刪除掉了,如圖:
強(qiáng)制寫注釋
為了以后你能更清晰的看到你所做的每一次更改的原因,你在每次提交的時候應(yīng)該寫上注釋,而且盡量詳細(xì).如圖:
但是,可能有的人因?yàn)橛X得太繁瑣,而不填寫注釋,這不利于以后的版本控制,可以將強(qiáng)制在提交的時候?qū)懽⑨?首先單擊右鍵,選擇TortoiseSVN->屬性,如圖:
在彈出的對話框中,點(diǎn)擊新建->日志大小,設(shè)置提交日志的最小字符數(shù)和鎖定日志的最小字符數(shù)為20,提交文本框中顯示邊線的字符位置設(shè)置為100,點(diǎn)擊確定,如圖:
提交,以后再次提交的時候,如果輸入的注釋少于20個字符,將無法提交.
沖突解決
沖突問題是最常見的問題,它是這樣產(chǎn)生的,A用戶check out了一個工作副本A,接著B用戶又check out了一個工作副本B.然后A用戶對副本A中的文件C做了修改(可以是內(nèi)容修改,文件刪除,重命名,以及位置移動),并且提交.這時候B用戶也對文件C的相同部分做了修改,這時候如果B用戶進(jìn)行提交,會先被告知版本過時,要求更新,然后更新的時候會提示沖突了,這時候可以用沖突編輯器進(jìn)行手動選擇.
假設(shè)A、B兩個用戶都在版本號為100的時候,更新了kingtuns.txt這個文件,A用戶在修改完成之后提交kingtuns.txt到服務(wù)器,這個時候提交成功,這個時候kingtuns.txt文件的版本號已經(jīng)變成101了。同時B用戶在版本號為100的kingtuns.txt文件上作修改,修改完成之后提交到服務(wù)器時,由于不是在當(dāng)前最新的101版本上作的修改,所以導(dǎo)致提交失敗。
版本沖突現(xiàn)象:
沖突發(fā)生時,subversion會在當(dāng)前工作目錄中保存所有的目標(biāo)文件版本[上次更新版本、當(dāng)前獲取的版本(即別人提交的版本)、自己更新的版本、目標(biāo)文件]。
假設(shè)文件名是kingtuns.txt
對應(yīng)的文件名分別是:
kingtuns.txt.r101
kingtuns.txt.r102
kingtuns.txt.mine
kingtuns.txt。
同時在目標(biāo)文件中標(biāo)記來自不同用戶的更改。
版本沖突解決:
場景:
1、現(xiàn)在A、B兩個用戶都更新kingtuns.txt文件到本地。
2、文檔中原始文件內(nèi)容如下:
3、A用戶修改文件,添加內(nèi)容“A用戶修改內(nèi)容”完成后提交到服務(wù)器
4、B用戶修改文件,添加內(nèi)容“B用戶修改內(nèi)容”完成后提交到服務(wù)器
B用戶提交更新至服務(wù)器時提示如下:
B用戶將文件提交至服務(wù)器時,提示版本過期:首先應(yīng)該從版本庫更新版本,然后去解決沖突,沖突解決后要執(zhí)行svn resolved(解決),然后在簽入到版本庫。在沖突解決之后,需要使用svn resolved(解決)來告訴subversion沖突解決,這樣才能提交更新。
解決沖突有三種選擇:
A、放棄自己的更新,使用svn revert(回滾),然后提交。在這種方式下不需要使用svn resolved(解決)
B、放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標(biāo)文件,執(zhí)行resolved filename并提交(選擇文件—右鍵—解決)。
C、手動解決:沖突發(fā)生時,通過和其他用戶溝通之后,手動更新目標(biāo)文件。然后執(zhí)行resolved filename來解除沖突,最后提交。
解決步驟如下:
1、? 在當(dāng)前目錄下執(zhí)行“update”(更新)操作
2、? 在沖突的文件上(選中文件--右鍵菜單—TortoiseSVN—Edit conflicts(解決沖突)),出現(xiàn)如下窗口
Theirs窗口為服務(wù)器上當(dāng)前最新版本
Mine窗口為本地修改后的版本
Merged窗口為合并后的文件內(nèi)容顯示
3、? 如果要使用服務(wù)器版本,在Theirs窗口選中差異內(nèi)容,右鍵,選擇Use this text block(使用這段文本塊)。
同理如果要使用本地版本,在協(xié)商后,在Mine窗口右鍵,選擇Use this text block(使用這段文本塊)。
4、? 修改完成后,保存kingtuns.txt文件內(nèi)容。
5、? 在B用戶的沖突目錄下,選中文件--右鍵菜單—TortoiseSVN—Resolved(解決)。會列出沖突的文件列表,如果確認(rèn)已經(jīng)解決,點(diǎn)OK。
6、? 沖突解決
7、提交解決沖突后的文件。
如何降低沖突解決的復(fù)雜度:
1、當(dāng)文檔編輯完成后,盡快提交,頻繁的提交/更新可以降低在沖突發(fā)生的概率,以及發(fā)生時解決沖突的復(fù)雜度。
2、在提交時,寫上明確的message,方便以后查找用戶更新的原因,畢竟隨著時間的推移,對當(dāng)初更新的原因有可能會遺忘
3、養(yǎng)成良好的使用習(xí)慣,使用SVN時每次都是先提交,后更新。每天早上打開后,首先要從版本庫獲取最新版本。每天下班前必須將已經(jīng)編輯過的文檔都提交到版本庫。
轉(zhuǎn)載于:https://juejin.im/post/5c8c6118f265da2db87beff7
總結(jié)
- 上一篇: [2018.12.9]BZOJ2153
- 下一篇: 关于GCD多任务处理