[轉]SVN-版本控制軟件


一、版本控制軟件

1、為什么需要版本控制軟件

問題:① 團隊開發 ② 異地協作 ③ 版本回退

2、解決之道

SCM(Software Configuration Management):軟件配置管理

在軟件開發中,軟件的配置管理主要是指對軟件源代碼的管理…

3、常用的版本控制軟件

cvs版本控制軟件:最早期比較成熟的產品,開源奇葩產品

vss版本控制軟件:Visual Source Safe,入門級產品,操作簡單,具有可視化界面

clearcase版本控制軟件:IBM負責管理與維護,中堅級產品,但是其並不是開源免費的,而是收費軟件,價格昂貴,但是其有良好的技術支持

git版本控制軟件(主流):基於分布式進行架構的,主要應用於Linux平台

svn版本控制軟件(主流):基於服務器端進行架構的,主要應用於Windows或Linux平台

4、什么是SVN版本控制軟件

svn是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件都使用svn作為代碼版本管理軟件。(bae、淘寶code、開源社區oschina)

 

SVN軟件屬於C/S結構軟件,所以在使用時必須安裝服務器端與客戶端。

5、SVN使用流程(五步走)

1)在服務器端安裝SVN服務器端軟件,配置中心服務器

2)配置中心服務器,搭建項目倉庫(在SVN中,一個項目就是一個倉庫)

3)項目經理開發項目的核心框架,然后通過SVN客戶端軟件,使用Checkout(檢出)指令連接服務器,並通過Commit(提交)指令上傳核心代碼到SVN中的相應版本倉庫。

4)程序員在個人計算機中安裝SVN客戶端軟件,然后通過SVN地址使用Checkout(檢出)指令鏈接服務器並更新源代碼到本地。

5)項目經理如果想校檢程序猿完成了哪些內容,可以使用Update(更新)指令,下載服務器端代碼到本地

Checkout指令:第一次與服務器鏈接使用一次,主要是實現服務器的連接與下載服務器端代碼到本地。

Commit指令:把本地的源代碼通過SVN客戶端軟件提交到服務器端

Update指令:把服務器端代碼下載更新到本地

二、VisualSVN服務器端軟件安裝

1、下載VisualSVN服務器端軟件

下載地址:http://www.visualsvn.com/

 

下載完成后,如下圖所示:

2、安裝VisualSVN

1)雙擊安裝VisualSVN服務器端

2)單擊Next下一步繼續

3)單擊Next下一步繼續

4)選中標准版,繼續,選擇安裝路徑(重要)

使用SVN軟件有一個基本要求,其軟件的安裝路徑:一定不能出現中文、空格或特殊字符,否則會導致SVN指令無法使用!

5)單擊Next下一步,單擊Install…直到軟件安裝完畢即可。

特別注意:服務器端軟件安裝完畢后,必須重啟服務器,否則可能會導致SVN指令無法生效,也可以使用在任務管理器中強制中止explorer.exe進程並再次創建模擬重啟過程。

中止進程:

重建進程:

3、驗證服務器端是否安裝成功

點擊桌面開始按鈕à選擇運行à輸出cmd,打開DOS窗口后,輸入如下指令,如果可以正常顯示,代表安裝成功。

三、TortoiseSVN客戶端軟件的安裝

1、下載TortoiseSVN客戶端軟件

下載地址:http://tortoisesvn.net/downloads

下載后如下圖所示:

說明:SVN客戶端軟件是分位數的,所以在安裝前必須查看操作系統的位數。如何查看呢?

答:在桌面計算機圖標上鼠標右鍵à選擇屬性,查看以下選項:

2、以64位操作系統為例安裝客戶端軟件

客戶端軟件安裝其路徑沒有任何要求,可以安裝在計算機的任一位置,安裝過程請首先安裝軟件包,然后安裝語言包即可。

特別說明:客戶端軟件安裝完畢后,必須重啟電腦,否則會導致SVN圖標無法顯示。

3、驗證客戶端SVN軟件是否安裝成功

在計算機的任何位置鼠標右鍵,如果出現以下兩個圖標,代表安裝成功

四、在服務器端搭建SVN倉庫

① 在SVN服務器上的任一位置,創建一個項目文件夾如Web

② 在Web目錄下創建一個Shop文件夾作為項目目錄(中級項目——Shop商城)

③ 使用SVN指令創建版本倉庫,基本格式:

svnadmin create 項目目錄路徑

示例代碼:

④ 使用SVN指令監管項目倉庫,基本格式:

svnserve -d(后台運行) -r(監管倉庫路徑) 倉庫路徑

示例代碼:

運行后發現,光標一直停留在下一行,不停的閃爍,其代表正在運行,請不要關閉當前DOS窗口,否則服務也會隨之關閉。

DOS窗口與Linux終端使用小技巧:Tab自動補全

如果在實際應用中,我們不記得項目或文件的名稱,可以只輸入前幾個字母+Tab鍵,系統會自動幫助我們進行補全。

五、使用客戶端軟件連接與管理服務器

1、Checkout檢出指令

① 首先在客戶端計算機安裝客戶端SVN軟件,安裝完畢后一定要重啟計算機

② 在虛擬主機目錄創建一個空文件夾,用於建立與服務器端的鏈接操作(如jingli)

③ 使用SVN客戶端軟件連接服務器

輸入要連接的SVN服務器地址

單擊服務器文件夾,鼠標右鍵進行檢出操作

檢出時一定要清楚的查看路徑是否正確:

如果顯示以下界面,代表檢出成功

2、Commit提交指令

① 項目經理開發項目的核心框架

② 開發完畢后,使用Commit指令提交本地代碼到服務器端

第一次提交時,提示如下信息:

以上提示代表授權失敗,為什么呢?

答:因為服務器端默認不允許匿名用戶上傳權限,可以在服務器端中的配置文件中進行更改,如下圖所示:

找到如下代碼,更改如下所示:

去除anon-access前面的#號,並把此行代碼頂格(必須頂格,否則報語法錯誤),更改read為write,代表匿名用戶具有可讀寫權限,設置完成后,再次提交代碼,如下圖所示:

3、Update更新指令

在實際項目開發中,如果服務器端的代碼有更新,我們就需要使用Update指令進行更新操作,如下圖所示:

六、SVN中的存儲機制

七、SVN中的圖標集

1、常規圖標

當本地文件與服務器端文件完全同步時,系統會自動顯示常規圖標zz

2、沖突圖標

當我們本地要提交的文件與服務器端已存在的文件有沖突時,系統會自動顯示沖突圖標

3、已刪除圖標

當服務器端的文件已刪除,那系統就會自動顯示已刪除圖標

4、增加圖標

在無版本控制圖標的基礎上此文件加入了上傳隊列,那么其系統會自動顯示增加圖標

5、無版本控制圖標

當本地新建了某個文件時,系統會自動顯示此文件圖標為無版本控制圖標

6、修改圖標

當本地文件有修改時,那系統會自動顯示修改圖標

7、只讀圖標

當服務器端文件設置為只讀時,那么本地文件將顯示只讀圖標

8、鎖定圖標

當本地文件已鎖定時,那么系統會自動顯示鎖定圖標

9、忽略圖標

當某個或某類文件被忽略時,那么系統會自動顯示忽略圖標

八、忽略文件

有些文件不希望上傳至svn服務器,應該將該文件或該類型的文件添加至忽略列表

1、忽略某個文件

以上程序代表忽略流程圖.xlsx文件,當下次提交時會自動忽略此文件。

2、忽略某類文件

以上程序代表忽略所有以.docx為后綴的文件。

九、版本回退功能

有些時候,軟件的運行可能使開發者或使用者不滿意,這時我們需要把當前版本退回到以前的某個版本。

① 在項目目錄中的空白位置鼠標右鍵,如下圖所示:

② 根據項目日志選擇要回退的版本

③ 查看要回退的版本,如下圖所示:

④ 在要回退的版本位置鼠標右鍵à選擇復原此版本作出的修改

⑤ 回退成功后,重新Commit提交目前版本到服務器端已達到更新服務器版本操作(重要)

十、解決版本沖突功能

1、什么是版本沖突

如果兩個人對同一個文件進行修改,會引起更新沖突,如何解決,模擬版本沖突:

說明:在實際項目開發中,經常會遇到版本沖突問題,是無法避免的,那開發中如何盡量減少版本沖突呢?

2、如何解決版本沖突?

答:① 合理分配項目開發時間

     旺財 上午開發

     小強 下午開發

    ② 合理分配項目項目開發模塊

     旺財 產品模塊

     小強 文章模塊

    ③ 使用SVN軟件解決版本沖突問題

3、使用SVN軟件解決版本沖突問題

① 先更新服務器端最新代碼到本地

index.php :整合后的沖突文件

index.php.mine :小強要提交的文件

index.php.r5 :最初的index.php文件

index.php.r6 :目前服務器端最新的index.php文件

② 刪除除index.php文件以外其他三個文件

③ 修改與整合index.php沖突文件

④ 調整完成后,重新提交數據到服務器即可

十一、配置多倉庫

1、為什么需要配置多倉庫

在SVN中,一個項目就是一個倉庫,但是如果按照上午所學知識對服務器進行配置則系統只能兼顧某個項目,無法同時開發多個項目。

2、監管指令說明

1)Apache 監管 http://localhost:80/端口自動指向Apache目錄下的htdocs文件夾

2)SVN 監管 svn://ip地址自動指向到其DOS指令監管的目錄,如Shop目錄

但是svn監管指令默認情況下只能監管一個目錄,那如果同時開發多個項目,那么要如何配置多倉庫呢?

答:可以監管倉庫的上一級總目錄(如Web文件夾即可)

3、配置多倉庫

以上程序設置成功后,我們的svn://服務器ip地址就會自動轉向到Web目錄,但是Web目錄並不是一個倉庫,所以這樣是沒有意義的,如果要實現監管必須要連接到數據倉庫:

連接Shop倉庫:svn://服務器的ip地址/Shop,如svn://127.0.0.1/Shop

連接Wechat倉庫:svn://服務器的ip地址/Wechat,如svn://127.0.0.1/Wechat

4、兩個小案例

例1:以Shop倉庫為例,只要在檢出時填寫如下地址即可

例2:如果之前已經連接了其他倉庫,但是現在倉庫已更換了連接地址,怎么辦?

答:可以使用重新定位,如下圖所示:

十二、權限控制功能

1、為什么需要權限控制

答:在實際項目開發中,我們需要同時管理多個項目,如配置多倉庫案例。如果不對項目設置相關權限,其SVN服務器端代碼將很難維護。

2、權限控制說明

在SVN中,如果對一個項目配置權限必須要經過三個文件的支持,

第一個文件:項目主配置文件,項目目錄/conf/svnserve.conf文件

第二個文件:passwd文件,認證文件,保存了項目中的的用戶名和密碼

第三個文件:authz文件,授權文件,保存授予某些用戶某些權限的功能

3、權限控制的基本步驟

① 首先在項目的主配置文件svnserve.conf文件中,開啟權限控制功能

1)注釋掉anon-access代碼

2)開啟passwd和authz文件

開啟passwd文件

開啟authz文件

② 設置認證文件(passwd),添加相關的用戶名和密碼

③ 設置授權文件,授予某些用戶某些權限

在SVN軟件中其運行環境和Linux都是一致的,就是每個用戶必須屬於某個用戶組,設置組信息

設置完成后,為每個組設置相關的管理權限

④ 驗證權限功能是否生效

十三、配置系統服務

1、為什么要配置系統服務

在實際項目應用開發中,如果我們使用DOS窗口來實現對SVN服務的開啟會造成很多不便。所以我們可以把監管指令設置為系統服務。

2、設置監管指令為系統服務

sc create指令基本語法:

基本要求:必須使用超級管理員運行此命令

sc create 服務名稱 binpath=(空格)"D:\svn\bin\svnserve.exe --service -r D:/svn/Web" start=(空格)auto(此設置服務級別為自動:開機時自動啟動)

示例代碼:

添加成功后,我們可以在控制面板à管理工具à服務à找到svn服務,如下圖所示:

單擊啟動,如果能成功啟動,代表已經配置成功了。

3、設置批處理指令

以上指令為了操作方便,我們還可以專門封裝成批處理指令

4、批處理實現刪除svn圖標

十四、SVN中的鈎子程序

1、為什么需要鈎子程序

在使用SVN軟件管理軟件源代碼時我們發現,SVN只能完成對代碼的整合,但是無法直接查看或測試軟件的源代碼。

2、鈎子程序

在SVN新版本中新增加了鈎子程序,就可以完成上圖中的管理員功能。

所謂鈎子就是與一些版本庫事件觸發的程序,例如新修訂版本的創建,或是未版本化屬性的修改。

默認情況下,鈎子的子目錄(版本倉庫/hooks/)中包含各種版本庫鈎子模板。    

以上程序中,我們只需要掌握post-commit鈎子程序即可(數據同步更新)

3、鈎子程序的設置步驟

① 在svn服務器端也安裝一個svn客戶端軟件(TortoiseSVN)

② 在服務器端的虛擬主機目錄創建一個文件夾,用於接收同步數據

③ 在服務端使用客戶端svn軟件,檢出服務器端的最新數據到本地文件夾中

注意:這個時候一定要保持客戶端與服務器端的同步數據必須是一致的

④ 在svn服務器端,打開Shop目錄下的hooks鈎子文件夾,找到post-commit模板,更改其后綴為.bat

⑤ 刪除批處理文件中的所有數據

⑥ 寫入如下相關指令

1)設置服務器端SVN路徑

SET SVN="D:\svn\bin\svn.exe"

2)設置服務器端項目運行目錄

SET DIR="D:\server\apache\htdocs\MyShop"

3)使用update指令同步更新數據

SVN update %DIR%

等號后面不能帶空格

⑦ 測試如下圖所示:

原創文章:http://www.cnblogs.com/nyxd/p/5365753.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM