Windows-Linux下的SVN伺服器搭建及SVN操作
一、Windows下的SVN伺服器搭建
開始安裝:
1、第一個安裝VisualSVN-Server-3.8.0-x64.msi
接下來我們要修改配置檔案:
- authz:負責賬號許可權的管理,控制賬號是否讀寫許可權
- passwd:負責賬號和密碼的使用者名稱單管理
- svnserve.conf:svn伺服器配置檔案
將紅框前的#刪除
在瀏覽器中檢視建立的倉庫:
SVN服務端安裝成功了!
2、第二個安裝TortoiseSVN-1.9.6.27867-x64-svn-1.9.6.msi
在右鍵選單中可以看見安裝好的客戶端:
3、第三個安裝TortoiseSVN中文語言包
原先的英文變成了漢字:
我們可以向倉庫中上傳檔案,並在瀏覽器中檢視:
二、Linux下的SVN伺服器搭建
系統環境:64位Centos 6.5系統
第一步:通過yum安裝SVN服務端:
yum -y install subversion
第二步:建立版本庫目錄(此僅為目錄,為後面建立版本庫提供存放位置)
mkdir -p /var/svn/svnrepos
第三步:建立svn版本庫,此處我舉例建立名為Test的版本庫
svnadmin create /var/svn/svnrepos/Test
進入Test目錄我們可以發現以下檔案:
第四步:修改配置
修改配置和Windows下的一樣就可以了,如果出現伺服器可以連線,但是“認證失敗”這一情況我們就不要將authz-db = authz給取消註釋。
多數資料會讓大家在realm = My First Repository處填寫伺服器ip,經過測試,填寫後並無什麼用處,所以僅僅去掉註釋即可。
第五步:防火牆開放3690埠
/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT
/etc/init.d/iptables save
service iptables restart
第六步:啟動SVN伺服器
svnserve -d -r /var/svn/svnrepos
七:客戶端訪問svn伺服器
在windows客戶端,輸入地址:svn://ip地址:3690/xxxx (iP地址為你linux的ip,xxxx為前文建立的版本庫名稱,3690為svn預設埠)
三、SVN的基本操作
3.1、SVN的一些基本概念
- Repository(倉庫):原始碼存放的位置;
- Checkout(檢出):當你手上沒有原始碼時你需要從repository中checkout一份;
- Update(更新):當你手上已經有原始碼了,Update使你的原始碼和repository中的原始碼進行同步;
- Commit(提交):當你完成了程式碼的修改你需要Commit至Repository;
- Conflict(衝突):如果兩個人修改了檔案的同一行,當SVN合併時不知道此行使用哪個人的,這時就會產生Conflict,我們要進行人工干預。
3.2、命令列操作SVN
- 建立版本庫:
svnadmin create Test
- 檢出操作:
E:\Users\HCP>svn checkout http://MrHu-PC/svn/Test
將名為Test的版本庫檢出到HCP資料夾中。
我們將檢出的Test稱為工作副本。
- 提交操作:
hcp使用者新增了一個edit.txt檔案,現在將新增檔案提交至版本庫中:
svn commit edit.txt
提交錯誤,提示edit.txt尚未加入版本庫。
我們使用命令:svn status
來檢視工作副本的狀態。
此時 edit.txt的狀態為?,說明它還未加到版本控制中。
使用命令:svn add xxx
將指定檔案加入版本控制
此時 edit.txt的狀態為A,說明它已經加到版本控制中。
現在我們可以使用svn commit -m xxx
來提交。
- 更新操作:
JACK將剛剛提交了edit.txt的最新版本庫檢出到了本地,這時HCP使用者再次修改了edit.txt檔案,並提交。
此時JACK本地中的版本已經過時了,JACK要進行更新操作。
svn update
JACK本地中edits.txt內容更新為:
- 版本回退:
使用SVN我們可以很方便的回退到上一個版本,從而放棄對檔案的修改。
svn revert xxx
修改edits.txt檔案
檢視工作副本狀態:
M表示edits.txt修改了。
現在我使用命令進行版本回退:
回退成功!
3.3、Eclipse安裝SVN外掛及使用
Eclipse安裝SVN外掛:
2. 線上安裝:
(1)、點選 Help –> Install New Software
(2)、在彈出的視窗中點選add按鈕,輸入Name(任意)和Location(外掛的URL),點選OK
http://subclipse.tigris.org/update_1.6.x
(3)、勾選出現的外掛,一步步安裝即可。
安裝成功!!
Subclipse外掛的使用:
- 分享專案:
輸入自己資源庫的URL
一路next後將專案分享至資源庫。
在SVN資源庫檢視我們可以看見分享的工程:
現在我們要進行提交:
現在檢視要分享的工程,出現黃色圓柱體圖示:
現在我們在工程中新建一個檔案:
將新增檔案新增至版本控制:
將新增檔案提交至版本庫:
實際上我們不需要手動進行add操作,直接提交就行了,外掛會自動幫我們add。
檢出操作:
更新操作:
將修改後的版本提交至版本庫中,那麼其他人的本地版本就是過時了。
我們要進行更新操作:
解決衝突:
製造衝突:
修改第5行並提交。
另外一人也修改第5行並提交
衝入製造成功,現在我們要解決衝突。
解決衝突的第一步:進行更新操作。
我們會發現以下變化:
第二步編輯衝突:
標記為解決:
再次提交:
程式碼還原:
在某次操作中我將Demo01修改了:
現在我們想將Demo01還原回曆史版本:
- 分支:
Branch 選項會給開發者創建出另外一條線路。當有人希望開發程序分開成兩條不同的線路時,這個選項會非常有用。
比如專案 SVNTestDemo下有兩個小組,svn 下有一個 trunk 版(主分支)。
由於客戶需求突然變化,導致專案需要做較大改動,此時專案組決定由小組 1 繼續完成原來正進行到一半的工作(某個模組),小組 2 進行新需求的開發。
那麼此時,我們就可以為小組2建立一個分支,分支其實就是 trunk 版(主幹線)的一個copy版,不過分支也是具有版本控制功能的,而且是和主幹線相互獨立的,當然,到最後我們可以通過(合併)功能,將分支合併到 trunk 上來,從而最後合併為一個專案。
- 分支:
新建分支:
切換至另外一個分支:
兩個分支進行開發:
Demo05這個檔案在SVNTestDemo這一分支中是不存在的,它在另外的分支中,我們要進行合併操作:
3.4、TortoiseSVN客戶端的使用
使用方法大同小異,這裡只重點介紹一下解決衝突。
產生衝突:
同樣生成三個檔案:
編輯衝突:
衝突解決,再次提交!