svn

itk發表於2024-07-31

SVN管理

簡介

svn: 程式碼版本管理工具,使用簡單

安裝

# 安裝httpd svn mod_dav)svn模組
yum -y install subversion httpd  mod_dav_svn

# 檢查模組是否安裝成功
ll /etc/httpd/modules/ | grep svn
-rwxr-xr-x. 1 root root  13456 8月  17 2015 mod_authz_svn.so
-rwxr-xr-x. 1 root root 155360 8月  17 2015 mod_dav_svn.so

svn配置

#  建立svn倉庫目錄
mkdir -p /mnt/rhd/svn-repos

# 建立svn版本庫
cd /mnt/rhd/svn-repos && svnadmin create repo1

# 修改使用者組及許可權
chown -R apache.apache repo1/

# 修改當前倉庫配置檔案
[general]
 anon-access = none                 # 關閉匿名訪問  
 auth-access = write                # 驗證使用者可寫
 password-db = /mnt/rhd/svn-repos/repo1/conf/htpasswd  # 指向驗證使用者名稱密碼的資料檔案 passwd
 authz-db = /mnt/rhd/svn-repos/repo1/conf/authz        # 指向驗證使用者的許可權配置檔案   authz

[sasl]

http配置

# 配置apache透過mod_dav_svn模組訪問svn服務
cat /etc/httpd/conf.d/svn.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /svn>
    DAV svn
    SVNParentPath /mnt/rhd/svn-repos    # 倉庫路徑
      AuthType Basic

      AuthName "SVN repose Auth"        # apache認證時彈出的訊息    
      AuthUserFile /mnt/rhd/svn-repos/repo1/conf/htpasswd     # passwd儲存使用者名稱和密碼的路徑 
      AuthzSVNAccessFile /mnt/rhd/svn-repos/repo1/conf/authz  # 存放使用者許可權的路徑
      Satisfy Any
      Require valid-user
    # </LimitExcept>
	</Location>

 注: SVNpath 和SVNParentPath區別
 		SVNParentPath是在倉庫目錄的上一級。
		SVNPath就是在倉庫的目錄下
兩個不同的引數
		SVNParentPath /var/www/svn-repos
		或者
		SVNPath /var/www/svn-repos/repo1
兩種訪問的模式不一樣,SVNParentPath就是訪問地址/svn/後面要加倉庫名稱,而另外一個不用加,直接/svn/就是倉庫了。



#  啟動httpd服務
systemctl enable httpd --now

svn版本庫介紹

ll /mnt/rhd/svn-repos/repo1/
總用量 16
drwxr-xr-x. 2 apache apache   51 3月  25 15:41 conf
drwxr-xr-x. 3 apache apache   25 4月   9 2018 dav
drwxr-sr-x. 7 apache apache 4096 7月  30 17:02 db
-r--r--r--. 1 apache apache    2 4月   9 2018 format
drwxr-xr-x. 2 apache apache 4096 4月   9 2018 hooks
drwxr-xr-x. 2 apache apache   39 4月   9 2018 locks
-rw-r--r--. 1 apache apache  229 4月   9 2018 README.txt

# conf目錄: 是這個倉庫的配置檔案(倉庫的使用者訪問賬號、許可權等)
# db目錄:  就是所有版本控制的資料存放檔案
# format檔案: 是一個文字檔案,裡面只放一個整數,表示當前檔案庫配置的版本號
# hooks目錄:  放置hook指令碼檔案的目錄
# locks目錄:  用來放置subsersion監控鎖定資料的目錄,用來追蹤存取檔案庫的客戶端
# dav目錄:    是提供apache與mod_dav_svn使用的目錄,讓他們儲存內部資料,剛開始建立時此目錄沒有

建立使用者密碼

# 使用htpasswd建立使用者,首次建立使用者。位置和subversion.conf裡的一樣,給第一個使用者新增密碼時要加c,意思是建立這個檔案,以後就不用加了,後期透過httpd伺服器訪問svn時,會使用這個檔案中的使用者資訊驗證使用者和密碼。執行新增使用者命令必須在passwd檔案所在的目錄下執行,否則會另外建立一個passwd檔案,之前的passwd檔案和配置會失效
cd /mnt/rhd/svn-repos/repo1/conf/
htpasswd -cb passwd test1 123456789

引數詳解:
	-c: 建立passwd檔案,預設為MD5加密
	-b: 在命令列中一併輸入使用者名稱和密碼而不是根據提示輸入密碼
	
注:
	第二次建立不需要新增-c
	# 新增使用者
	htpasswd -b passwd 使用者名稱 密碼
	# 刪除使用者
	htpasswd -D passwd 使用者名稱
	# 修改使用者密碼
	htpasswd passwd 使用者名稱

建立版本庫許可權控制檔案

cat /mnt/rhd/svn-repos/repo1/conf/authz
[groups]          # 表示群組設定
[/]               # 表示在所有倉庫的根目錄下
test = rw         # 表示test使用者對所有倉庫根目錄下的軟體版本庫有rw許可權
test1=r           # 表示test1使用者對所有倉庫根目錄下的軟體版本庫有r許可權
[repo1:/]         # 表示repo1倉庫的訪問許可權
test2 = rw         # 在repo1倉庫中test2有讀寫許可權

[repo1:/ch]       # 表示repo1倉庫下/ch目錄訪問許可權
test3=rw          # 在repo1倉庫/ch目錄test3有讀寫許可權


web訪問

# 重啟httpd服務
systemctl restart httpd

# 訪問
http://httpIP/svn/repo1

win客戶端使用

# 下載地址https://svnbucket.com,選擇語言

# 安裝完成後,點選圖示右鍵---選擇SVN Checkout  -------->  輸入版本庫url+++路徑