SVN的安裝和使用

一.什麼是svn
全稱 SubVersion

代碼管理工具,在團隊開發的時候使用,便於代碼的管理

剛開發SubVersion時 開發團隊用的CVS(CVS是在SVN出現之前的代碼管理工具)

SubVersion1.0出現後 就使用SubVersion來管理SubVersion了

C/S程序

Server 服務器 用來管理代碼(代碼或者項目是在服務器的倉庫repository裏存放)

客戶端 可以向服務器提交、從服務器下載最新的代碼(檢出checkout)、修改後提交(commit)

檢出(checkout)
提交(commit)

客戶端和服務器端通過svn這個私有的協議交互
svn://

每當版本庫接受了一個提交,文件系統進入了一個新的狀態,叫做
一次修訂(revision),每一個修訂版本被賦予一個無一無二的自然數,
一個比一個大,初始修訂號是0,只創建了一個空目錄,沒有任何內容.

全局修訂號:不像其他版本控制系統,svn的修訂號是針對 整個svn目錄樹
的,不是針對特定文件的. 和cvs有較大差別

cvs: 每個文件都有1.0 1.1 1.2
svn :全局的 只有一個文件修改 修訂號就改

二.下載並安裝
1.下載svn-1.4.4
官方網站 http://subversion.tigris.org/

2.安裝svn-1.4.4

(1)svn需要找到apache服務器 所以先裝 apache_2.0.63-win32-x86-openssl-0.9.7m.msi

一路下一步
注: apache web目錄在 htdocs下

(2)安裝svn-1.4.4-setup.exe

一路下一步

3.準備工作和驗證安裝是否成功

將bin路徑放置到path下

在cmd下輸入svn驗證是否安裝完畢

出現 使用”svn help”得到用法

就是安裝好了

常用命令
svnserve.exe svn服務器

svnadmin.exe 管理

svn.exe 客戶端

三.倉庫的創建和導入項目等
1.在服務器端創建倉庫並啓動svn服務器
c:\ 建立svn文件夾

svn文件夾下 建立repository文件夾

(1)在服務器端創建一個倉庫
svnadmin create c:\svn\repository 把repository文件夾當成倉庫

沒出現提示表示創建成功

(2)啓動svn服務器(服務器可以監聽客戶端的請求)

在命令行中輸入如下命令:

svnserve -d -r c:\svn\repository 啓動svn服務
讓svn將此目錄作爲倉庫,並偵聽客戶端的請求.
-d 爲後臺模式
-r 指定服務器的倉庫路徑

d daemon 後臺進程
r repository 倉庫

注意:不要關控制檯 關了svn服務器就停了(可以通過查看svnserve進程來看服務器是否關閉了)
2.從客戶端向服務器端import項目
建立 c:\svnclient\project1 文件夾

將project1作爲一個項目

project1裏面 建立
test目錄
test.txt(模擬代碼*.java)

將項目導入到服務器(倉庫裏),使用客戶端命令svn,例如 svn import svn://localhost

演示代碼:

cd svnclient 進入項目所在的路徑

svn import svn://loclahost 將svnclient文件夾下的項目導入到svn服務器上,localhost爲svn服務器的ip地址

問題1:出現一系列警告(沒有成功)

svn:E205007:無法使用外部編輯器獲得日誌信息…

svn:E205007:沒有設置SVN_EDITOR

原因:svn要指定日誌變量SVN_EDITOR,用來保存日誌

所以我們需要新建環境變量SVN_EDITOR

變量名:SVN_EDITOR

值:notepad

新建完畢以後從新啓動cmd才生效

從新輸入

cd c:\svnclient
svn import svn://localhost

*出現一個記事本

–此行及以下內容將會被忽略–

A
A表示Add
關了該記事本

控制檯出現

日誌信息未修改,或未指定
a>終止,c>繼續,e>編輯:

選c 繼續

問題2:

svn:E170001:認證失敗

原因:我們沒有指定好用戶的用戶名、密碼,svn要保證
擁有權限的用戶才能提交項目、檢出項目,不能讓任何人
提交、檢出項目

*********設置權限***********
c:\svn\repository\conf

svnserve.conf 打開這個文件

匿名訪問,不需要用戶名就可以讀

anon-access = read

授權訪問,有權限才能寫

auth-access = write

anon-access = read 的#去掉 這樣可以匿名可以讀了

不過現在客戶端也只可以匿名讀,我們的import操作是寫操作,
所以我們在此行下增加一行 anon-access = write

最終
anon-access = read
anon-access = write

修改完畢以後 停掉服務器 重新啓動(啓動時會從新讀取配置信息)

再重新把客戶端的項目導入到服務器

svn import svn://localhost
關閉彈出來的記事本

日誌信息未修改,或未指定
a>終止 c>繼續 e>標記

選擇c,出現以下提示

增加project1
增加加project1\test
增加加project1\test.txt

提交後的版本爲1
3.在服務器端創建虛擬路徑
導入的項目會放在svn服務器某個默認目錄,如果再導入一個項目默認放到
這個目錄就亂了,所以要在服務器端創建虛擬路徑,以後在客戶端導入
項目時,把項目導入到指定虛擬路徑下即可

如何創建虛擬路徑

svn mkdir svn://localhost/zzy

虛擬路徑看不出來
實質存到一個單獨的文件中 db\revprops db\revs中
和cvs不一樣(svn是將整個項目放到一個文件中)

再導入另一個項目

新建svnclient2文件夾 在此文件夾下建立project2項目

cd c:\svnclient2

svn import svn://localhost/zzy

import項目時每次都出現一個文本文件很麻煩 如何解決(可以不做這個練習)
首先去掉SVN_EDITOR環境變量

在c盤下建立log.txt

svn commit hello.txt -f c:/log.txt
這樣就不會每次輸入完命令 彈出文本文件再關閉了

四.使用checkout檢出項目
把項目checkout到指定目錄svnclient3

cd c:\svnclient3

svn checkout svn://localhost/zzy

*取出指定版本
先查看幫助 svn help checkout

svn checkout -r 4 svn://localhost/zzy 檢出版本4
五.客戶端修改項目後 從新提交到服務器

修改項目中的test.txt文件後

cd c:\svnclient3\zzy\project2\test

svn commit test.txt

如果提交時 提示鎖定
可以使用svn cleanup 清除鎖定後 再提交就行了

可以在另一個svnclient4文件夾檢出一下剛提交的project2看一下是否提交成功

六.更新 update
從服務器下載最新的文件(不是第一次下載)

第一次下載叫檢出checkout

例如客戶端4 更新了文件test.txt 然後提交到服務器上

客戶端3可以使用如下命令更新

cd c:\svnclient3\zzy\工程名

svn update test.txt

更新算讀操作

七.檢索出jboss的源代碼

http://anonsvn.jboss.org/repos/jbossas/

1.c盤 新建jboss文件夾

2.
cd jboss
svn checkout http://anonsvn.jboss.org/repos/jbossas/

八.svn高級操作 權限管理
用戶名和密碼在 svn\repository\conf下的三個文件中
svnserve.conf
authr
passwd

把svnserve.conf中的這兩行都註釋掉

anon-access = read

anon-access = write

1.把svnserve.conf文件中的這行註釋打開
password-db = passwd

2.在passwd中指定用戶名和密碼

zhangsan = 123
lisi = 456

注意:在一次登錄後,SVN會將我們的登錄信息保存起來存放在硬盤上的文件中,
其存放位置爲:C:\Documents and Settings[您的登錄系統用戶名]\
Application Data\Subversion,如果想要刪除該信息,只需要將該目錄中
的auth文件夾刪除即可.

如果把auth刪除掉,下次還要從新輸入用戶名、密碼

3.客戶端可以修改test.txt 然後重新commit 這時需要輸入用戶名和密碼

****TortoiseSVN的使用*******
一.什麼是TortoiseSVN
TortoiseSVN(圖形化的SVN客戶端)

Tortoise烏龜的意思

TortoiseSVN-1.6

這個客戶端可以標示哪個文件是新增的、改過的等等

隨便在一個目錄上單擊右鍵會多出兩個選項

SVN Checkout
TortoiseSVN

說明它已經和資源管理器進行了集成
二.使用TortoiseSVN
(一)服務器端
創建一個倉庫並啓動
(二)客戶端
1.新建一個工程導入
客戶端新建 c:\myclient文件夾

在裏面建立
test.txt
test2.txt

可以在工程右鍵(也可以進入工程後 在空白處右鍵)—選擇TortoiseSVN–import

URL of repository:

MiddleBk 爲虛擬路徑名

輸入用戶名和密碼即可

2.從服務器上檢出項目

新建myclient2文件夾 在myclient2文件夾右鍵-SVN checkout

Checkout Depth

Fully recursive(完全遞歸 目錄和子目錄都會導出) 不需要改

對勾表示項目已經和服務器關聯起來了

3.修改文件並提交
修改過的文件 會變成 紅色感嘆號! 右鍵-SVN commit 提交後又變成綠色

4.新建文件test3.txt 加入到工程

TortoiseSVN-add

新增加的項目是 用 + 號圖標表示

增加完後還要提交一次纔可以哦!!

5.不想讓匿名用戶讀取服務器上的文件anon-access = none

6.刪除文件

客戶端中刪除一個文件(例如test3.txt)後可以在空白處右鍵-提交
服務器裏的該文件也沒有了

解決TortoiseSVN不顯示綠色圖標問題

*****svn整合Apache********
整合後,使用瀏覽器訪問倉庫
安裝apache服務器
整合後apache的權限管理比svn服務器本身的權限管理更好、粒度更細

Apache 不是指Apache tomcat
Apache是一個應用服務器(搜狐、新浪都是用的Apache)

http://www.apache.org/

拉到下面找到HTTP Server超鏈接 點擊該鏈接

Download !
from a mirror 點擊該超鏈接

選擇apache2.0

complete list of mirrors

archive download site 歸檔下載站點

binaries-win32

下載apache 2.0.63-win32-x86-openssl-0.9.7m.msi

安裝Apache Http Server

admin.com
admin.com
[email protected]

選擇第一個
for All Users,on Port 80,as a Service–Recommended.

安裝完apache服務器 在服務管理器中啓動Apache服務

右鍵桌面apache圖標–Open Apache Monitor

start後監聽本機的80端口了

客戶端瀏覽器輸入http://localhost/

出現:
這不是你想看見的頁面吧?

apache安裝成功
apache能集成各種各樣的功能,如何集成功能?

答:以模塊化的形式集成

在apache的如下目錄中集成功能
C:\Program Files\Apache Group\Apache2\modules
svn和apache服務器集成
1.把svn的兩個so文件拷貝到apache的 modules目錄下

svn的so文件所在路徑爲 C:\Program Files (x86)\Subversion\bin

mod_dav_svn.so
mod_authz_svn.so

這兩個文件爲svn和apache整合的必須的文件

但這樣放進去不會被apache自動識別出來
還需要在apache裏面配置一下

找到%apache安裝路徑%\conf\httpd.conf

找到145 146兩行(apache2.2在83 84行)把前面的#去掉

LoadModule dav_module modules/mod_dav.so

LoadModule dav_fs_module modules/mod_dav_fs.so

2.在174行加入(如果安裝完後自動幫你加上就不用加了)

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

3.
在最後一行加入

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