1. 程式人生 > >Windows-Linux下的SVN伺服器搭建及SVN操作

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客戶端的使用

使用方法大同小異,這裡只重點介紹一下解決衝突。
產生衝突:
這裡寫圖片描述
這裡寫圖片描述
同樣生成三個檔案:
這裡寫圖片描述
編輯衝突:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

衝突解決,再次提交!