SVN搭建服務器和客戶端使用詳解

前言(必讀哦):

本文分爲五部分:
一:SVN簡介;
二:SVN搭建服務器;
三:SVN客戶端使用及詳解;
四:版本衝突問題解決方案;
**Attention(注意)!!!**並不需要每個人都創建SVN服務器,一個團隊或者說現在我們這一個班級有一個SVN服務器(http://192.168.13.24/svn/1908b)該url,url,url 重要的事情說三遍,可以在瀏覽器直接打開,當安裝了客戶端後要用到這個url 。是1908b的版本管理服務器,服務器的版本庫在我的本機電腦上,所以除學習相關的不可以上傳哦!使用搭建服務器的教程部分僅供大家以後參考使用,我們班的服務器已經搭好了,所以現在跳過第二部分,學習其餘部分即可。

一:SVN簡介

SVN是subversion的縮寫,是一個開放源代碼的版本控制系統,通過採用分支管理系統的高效管理,簡而言之就是用於多個人共同開發同一個項目,實現共享資源,實現最終集中式的管理。
SVN的全稱是Subversion,即版本控制系統。它是最流行的一個開放源代碼的版本控制系統。作爲一個開源的版本控制系統,Subversion管理着隨時間改變的數據。這些數據放置在一箇中央資料檔案庫(Repository)中。這個檔案庫很像一個普通的文件服務器,不過它會記住每一次文件的變動。這樣就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。Subversion是一個通用的系統,可用來管理任何類型的文件,其中包括程序源碼。
SVN採用客戶端/服務器體系,項目的各種版本都存儲在服務器上,程序開發人員首先將從服務器上獲得一份項目的最新版本,並將其複製到本機,然後在此基礎上,每個開發人員可以在自己的客戶端進行獨立的開發工作,並且可以隨時將新代碼提交給服務器。當然也可以通過更新操作獲取服務器上的最新代碼,從而保持與其他開發者所使用版本的一致性。
SVN的客戶端有兩類,一類是基於Web的WebSVN等,另一類是以Tortoise SVN爲代表的客戶端軟件。前者需要Web服務器的支持,後者需要用戶在本地安裝客戶端,兩種都有免費的開源軟件供使用。SVN存儲版本數據也兩種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要版本庫的存儲系統)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。

二:SVN搭建服務器

SVN是subversion的縮寫,是一個開放源代碼的版本控制系統,通過採用分支管理系統的高效管理,簡而言之就是用於多個人共同開發同一個項目,實現共享資源,實現最終集中式的管理。並不需要每個人都創建SVN服務器,一個團隊或者說現在我們這一個班級有一個SVN服務器即可。
VisualSVN-Server.msi(svn服務端)
下載地址:http://subversion.apache.org/packages.html
Svn文件夾裏有,版本是4.2.2。
搭建流程:https://www.cnblogs.com/yankyblogs/p/7282752.html

三:SVN客戶端使用及詳解

3.1 SVN客戶端安裝(超簡單)

Url :http://192.168.13.24/svn/1908b

安裝TortoiseSVN 1.14, 不用安裝visualSVN-Server

右鍵有這兩個選項,小黑框cmd svn --version 顯示如下圖即安裝成功。

此時安裝及漢化成功,下面是重點了!!!

3.2 SVN客戶端使用(重點掌握部分)
安裝svn很簡單,用起來就很懵了,那麼下面就介紹一下svn常用功能
導入(import),導出(export),提交(commit),檢出(checkout),更新(update)
3.2.1導入(import) 和 提交的區別
導入:將一個新的項目(和svn沒有版本關係)導入到服務器版本庫中,當再次檢出(checkout)時就會產生版本。
提交:將一個和svn有版本關係的項目提交到服務器版本庫中。

例如我要上傳shop_admin_new這項目 我導入的url就是這樣填寫的:
Url(這個url在上邊提過,還記得嗎?)+shop_admin(指定文件夾,比如說我們全班做一個shop_admin項目,那我們上傳的項目就在上傳在這個目錄下。同理,我們全班做一個movie_admin項目,那我們上傳的項目就在上傳在movie_admin目錄下。)+shop_admin_ljy(項目名).

3.2.2導出(import) 和檢出的區別
導出:將svn版本庫項目導出到本機指定目錄下,導出後不再擁有版本關係。
檢出:檢出的項目仍然被SVN進行管理,和版本庫仍然關聯。
怎麼導出:在自己想要導出的本機目錄下右鍵
3.2.3提交(commit)
是將本地做過的改動,同步上傳到SVN服務器,改動包括修改、新增、刪除、改名、移動等。

3.2.4檢出(checkout)
是把服務器上最新的版本下載到本地,檢出的項目仍然被SVN進行管理,和版本庫仍然關聯。步驟和導出類似,注意文件夾層級關係即可。

3.2.5更新(update)
是把服務器上最新的版本下載到本地,前提是開發者本地有這個文件。即是檢出的文件而不是導出的文件。

四:SVN版本衝突問題解決方案

4.1.爲什麼會出現衝突
<1>兩個開發人員,Harry和Sally,分別從服務器端下載了文件A。

<2>Harry修改之後,A變成了A’,Sally修改之後,A變成了A”。

<3>Harry先一步提交,使服務器端文件的版本也變成了A’

<4>Sally本地的文件A”已經過時了,此時她已無法提交文件,服務器會要求她先進行一次更新操作。

<5>此時Sally的更新操作有兩種可能
(1)Sally所做的修改與Harry恰好是同一個位置,更新操作嘗試合併文件失敗,發生衝突。對應4.2修改相同位置產生的版本衝突。
(2)Sally所做的修改與Harry不是同一個位置,更新操作嘗試合併文件成功。對應4.3修改不同位置產生的版本衝突。

4.2修改相同位置產生的版本衝突
(案例解釋:a,b同時檢出文件productController.java,那麼a,b擁有相同版本號,假設爲版本1,a修改文件第10行並提交,此時版本庫的productController.java版本爲2,但請注意:b手裏的productController.java如果沒有更新,其版本仍爲1,這時b如果修改同樣的第10行並提交,就會版本衝突)

多出來3個文件,

右鍵自己的文件

當面對以上3個窗口時,還是容易讓人發矇,尤其是文件比較複雜,衝突一大片,各種顏色摻雜在一起,不知如何下手,害怕把其他文件意外破壞和文件合併錯誤。那麼怎麼辦呢?我們不妨先從簡單的文件衝突入手,徹底理解各種顏色的含義,衝突行是如何標記的,這樣我們纔敢大膽地使用這個界面進行代碼合併操作,不用擔心合併後,把別的文件無辜干擾了或者出現合併錯誤的問題。

仔細觀察以上3個窗口,我們發現,23行和24行之間多出來一行,即橙色行,並且Theirs 和Mine 都含有這一行,這個是未衝突前,此行的內容,即剛開始的版本。第24行是爆紅行、衝突行,相應字段還是黃色警示,並且在第3個窗口(下方窗口)第24行全是?????這種符號,意味着無法合併他倆對此行的同時修改,需要我們判斷,要麼採取Theirs 的,要麼採取Mine 的,要麼採取上一版本,要麼重新商量一個相同的。SVN也提供了幾個方便的右鍵按鈕,提示如何做出這些選擇,左上是別人修改文件內容,右上是自己修改的內容,下面是合併的內容,可以自由右鍵選取使用哪一個。
標記爲解決即可處理衝突

4.2修改不同位置產生的版本衝突(容易解決)
(案例解釋:a,b同時檢出文件productController.java,那麼a,b擁有相同版本號,假設爲版本1,a修改文件第10行並提交,此時版本庫的productController.java版本爲2,但請注意:b手裏的productController.java如果沒有更新,其版本仍爲1,這時b如果修改不同行(不是第10行)並提交,就會版本衝突)

點擊更新,然後一路確定即可。此時a,b修改的內容都會在新的版本中體現。

4.3一些建議
當文檔編輯完成後,儘快提交,頻繁的提交/更新可以降低在衝突發生的概率,以及發生時解決衝突的複雜度。

在提交時,寫上明確的message,方便以後查找用戶更新的原因,畢竟隨着時間的推移,對當初更新的原因有可能會遺忘。

養成良好的使用習慣,使用SVN時每次都是先更新,後提交。每天早上打開後,首先要從版本庫獲取最新版本。每天下班前必須將已經編輯過的文檔都提交到版本庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章