一.什麼是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 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.
在最後一行加入