<<svn服務配置和維護常用命令>>
~/bin/svn-create-repos.sh
1. Svn獨立服務安裝
操作系統: Redhat Linux AS3 AS 4 ContOS AS 4
安裝包獲取:
下載:
http://subversion.tigris.org/downloads/subversion-1.4.0.tar.gz
http://subversion.tigris.org/downloads/subversion-deps-1.4.0.tar.gz
編譯:
以root用戶登錄.
將subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz傳到服務器.
$ tar xfvz subversion-1.4.0.tar.gz
$ tar xfvz subversion-deps-1.4.0.tar.gz
subversion-deps包有四個目錄zlib apr apr-util neon這四個目錄都是依賴包, 編譯subversion所必須的代碼
$ cd subversion-1.4.0
$ ./configure -prefix=/opt/svn -without-berkeley-db -with-zlib
(注: 以svnserve方式運行, 不加apache編譯參數. 以fsfs格式存儲版本庫, 不編譯berkeley-db)
$ make clean
$ make
$ make install
$ vi /etc/profile,在/etc/profile
# 加入:
PATH=$PATH:/opt/svn/bin
export PATH
測試:
$ svnserve -version
# 如果顯示如下, 安裝成功:
svnserve, version 1.4.0 (r21228)
compiled Oct 12 2006, 10:18:56
Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet
(http://www.Collab.Net/).
The following repository back-end (FS) modules are available:
* fs_fs : Module for working with a plain file
(FSFS) repository.
2. svn配置
2.1 建立版本庫目錄
建立版本庫目錄, 可建多個:
$ mkdir -p /opt/svndata/repos1
$ mkdir -p /opt/svndata/repos2
建立版本庫:
$ svnadmin create /opt/svndata/repos1
$ svnadmin create /opt/svndata/repos2
2.2 修改版本庫配置文件:
2.2.1 版本庫1:
$ vi /opt/svndata/repos1/conf/svnserve.conf
# 內容修改爲:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos1
2.2.2 版本庫2:
$ vi /opt/svndata/repos2/conf/svnserve.conf
# 內容修改爲:
[general]
anon-access = none
auth-access = write
password-db = /opt/svn/conf/pwd.conf
authz-db = /opt/svn/conf/authz.conf
realm = repos2
# 即除realm = repos2外, 其他與版本庫1配置文件完全相同. 如果有更多的版本庫, 依此類推.
2.3 配置允許訪問的用戶:
爲了簡化配置, 2個版本庫共用1個用戶配置文件. 如有必要, 也可以分開.
注意: 對用戶配置文件的修改立即生效, 不必重啓svn.
文件格式如下:
[users]
<用戶1> = <密碼1>
<用戶2> = <密碼2>
其中, [users]是必須的. 下面列出要訪問svn的用戶, 每個用戶一行.
$ vi /opt/svn/conf/pwd.conf
[users]
alan = password
king = hello
2.4 配置用戶訪問權限:
爲了簡化配置, 3個版本庫共用1個權限配置文件/opt/svn/conf/authz.conf. 如有必要,
也可以分開. 文件中定義用戶組和版本庫目錄權限.
注意:
* 權限配置文件中出現的用戶名必須已在用戶配置文件中定義.
* 對權限配置文件的修改立即生效, 不必重啓svn.
2.4.1 用戶組格式:
[groups]
<用戶組名> = <用戶1>,<用戶2>
其中, 1個用戶組可以包含1個或多個用戶, 用戶間以逗號分隔.
2.4.2 版本庫目錄格式:
[<版本庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
其中, 方框號內部分可以有多種寫法:
/ 表示根目錄及以下. 根目錄是svnserve啓動時指定的, 我們指定爲
/opt/svndata.這樣, / 就是表示對全部版本庫設置權限
repos1:/ 表示對版本庫1設置權限
repos2:/abc 表示對版本庫2中的abc項目設置權限
repos2:/abc/aaa 示對版本庫2中的abc項目的aaa目錄設置權限
權限主體可以是用戶組,用戶或*, 前面加@表示用戶組, *表示全部用戶. 權限可以是
w,r,wr和空, 空表示沒有任何權限.
$ vi /opt/svn/conf/authz.conf
# 示例:
[groups]
admin = alan
[/]
@admin = rw
[repos1:/abc/aaa]
king = rw
[repos2:/pass]
king =
刪除無用文件:
$ rm /opt/svndata/repos1/conf/authz
$ rm /opt/svndata/repos1/conf/passwd
$ rm /opt/svndata/repos2/conf/authz
$ rm /opt/svndata/repos2/conf/passwd
3. 啓動svn
建立啓動svn的用戶:
$ useradd svn
$ passwd svn
# 根據提示爲用戶svn設置密碼
允許用戶svn訪問版本庫:
$ chown -R svn:svn /opt/svndata
$ chown -R svn:svn /opt/data
// 啓動svn:
$ su - svn -c "svnserve -d -listen-port 9999 -r /opt/svndata"
其中:
su svn表示以用戶svn的身份啓動svn
-d 表示以daemon方式(後臺運行)運行
-listen-port 9999 表示使用9999端口, 可以換成你需要的端口. 但注意, 使用1024以下的端口需要root權限
-r /opt/svndata 指定根目錄是/opt/svndata
// 檢查:
$ ps -ef | grep svnserve
如果顯示如下, 即爲啓動成功:
svn 6941 1 0 15:07 ? 00:00:00 svnserve -d -listen-port 9999 -r /opt/svndata
4. svn服務與apache 整合
Subversion存儲方式, 一是Berkeley DB伯克利存儲方式, 二是fsfs存儲方式.
1,安裝APR-1.2.7和APR-util-1.2.7
下載地址: http://apr.apache.org/
tar zxvf apr-1.2.7.tar.gz
./configure
make
make install
tar zxvf apr-util-1.2.7.tar.gz
./configure --with-apr=/usr/local/apr/
make
make install
2,編譯安裝APACHE.
tar zxvf httpd-2.2.3.tar.gz
cd httpd-2.2.3
./configure --prefix=/opt/apache --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config
make
make install
3,安裝subversion-1.4.0
tar zxvf subversion-1.4.0.tar.gz
./configure --with-apxs=/opt/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr
問題: 有關共享庫錯誤
方法: echo "/usr/local/apr-util/lib" >> /etc/ld.so.c
ldconfig echo $?
make
make install
設置環境變量(可做可不做)
vi /etc/profile,在/etc/profile最後加入:
PATH=$PATH:/opt/svn/bin
export PATH
4,查看subversion兩個動態庫有沒有安裝成功
vi /opt/apache/conf/httpd.conf
看到下面兩個模塊說明安裝成功
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
5,配置SVN
vi /opt/apache/conf/httpd.conf
配置:
<Location /svn>
DAV svn
SVNParentPath /data/svn/repos //svn父目錄
AuthType Basic //連接類型設置
AuthName "Subversion repository"
//連接框提示
AuthUserFile /data/svn/passwd //用戶配置文件
AuthzSVNAccessFile /data/svn/auth
Require valid-user //passwd所有的用戶都可以訪問
</Location>
6,建立SVN存儲倉庫
#mkdir -p /opt/svndata/repos
#svnadmin create -fs-type fsfs /opt/svndata/repos
備份以前的SVN庫
#svnadmin dump /opt/svndata/repos > /root/repos20080328
把備份出來的數據恢復到本地
#svnadmin load /opt/svndata/repos/ < /root/repos20080328
7,建立本地訪問控制文件
#/opt/apache/bin/htpasswd [-c] /opt/passwd north
//第一次設置用戶時使用-c表示新建一個用戶文件. #/opt/apache/bin/htpasswd passwd 用戶名(加入新的用戶)
8,建立本地項目控制文件
touch /opt/svndata/auth
文件內容爲:
[groups]
[repos1:/]
#wxy = rw
north = rw
tom = rw
[repos2:/]
repos2 = rw
9,安裝客戶端, 訪問服務器
http://192.168.0.180:/svn/jishu
注意: SVN是APACHE配置的時候加上去的.
10,到此安裝基本結束
修改一下/data/svn/repos屬性, 否則會導致文件上傳失敗.
chmod -R apache.apache repos
三,日常維護命令和參數
啓動svn服務
svnserve -d --listen-port 20000 -r /opt/svndata
創建版本庫
svnadmin create fs-type fsfs /opt/svndata/mark
查看版本庫的信息
svn list file:///opt/svndata/mark
svn list --verbose file:///opt/svndata/mark
導入庫的目錄結構
svn import /tmp/mark/ file:///opt/svndata/mark/ --message "init"
(文件夾mark下有bo)
刪除版本庫mark下文件夾bo
svn delete svn://192.168.0.180:20000/opt/svndata/mark/bo -m "delete "
//導出
$svnlook youngest oldrepo
$svnadmin dump oldrepo >; dumpfile
//還原
$svnadmin load newrepo < dumpfile
停止subversion服務
ps -aux | grep svnserve
kill -9 ID號
作者:options-future
本文出自 "bo" 博客, 請務必保留此出處http://future.blog.51cto.com/26959/95178
100. FAQ
100.1 subversion 中修改 log message
有兩個命令可以完成:
* 客戶端:
[~]$ svn propset svn:log "message text" -r 48 URL --revprop
[~]$ svn propset svn:log '使得當參數不匹配時, 其能夠正常打印幫助信息然後退出' -r 33 --revprop
* 服務端:
[~]$ svnadmin setlog REPOS_PATH -r REVISION FILE
NOTE:
但是, 兩者都需要設定 pre-revprop-change, 倉庫下 svn/hook 目錄裏有
pre-revprop-change.tmpl 模板, 複製一份到文件 pre-revprop-change 並 chmod a+x
就可以了.
100.2 svn 查看資源歷史記錄失敗; 並提示"Item is not readable"
問題: svn 查看資源歷史記錄失敗 , 並提示"Item is not readable"
solution:
在svnserve.conf 文件中,設置 anon-access = none 就可以了
100.3 SVN服務器搬家
內部服務器裝上2T硬盤後, 打算把SVN服務器也搬到那臺機器上. 原理就是dump一下現有
的全部數據, 再在另外一臺機器上load. 過程: 在本地VisualSVN Server安裝路徑的
bin目錄下執行:
// g:\svn\new爲當前SVN庫存放的位置
$ svnadmin dump g:\svn\new > g:\transfer.dmp
13個G的庫, dump後有35G, 傳到新機器上. 在該機器上執行:
$ svnadmin create g:\svn\new
$ svnadmin load g:\svn\new < g:\transfer.dmp
賬號及授權配置文件就是g:\svn下的 authz,htpasswd, 拷到新機器庫目錄下即可. 版本
號爲1100左右, 整個搬家過程用了近6個小時.
查看原文: http://rico.zhyh.org/?p=3368
100.4 set proxy for svn
公司上網需要用通過代理, 不能直接訪問外部網絡, SVN中可以通過配置文件配置代理來
下載代碼, 在安裝完SubVersion之後, 在 C:\Documents and
Settings\[username]\Application Data\Subversion目錄下有一個servers文件(in
linux, it's ~/.subversion/servers), 其中有一些說明, 直接在最後一行加入如下配置
即可:
http-proxy-host = [代理服務器的域名或者IP]
http-proxy-port = [代理服務器的端口]
http-proxy-username = [username]
http-proxy-password = [password]
<<svn服務配置和維護常用命令>>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
bat記錄遠程桌面連接登錄信息
jason1982
2019-02-24 12:57:09
Exchange Server 2010 POP3&IMAP設置詳解
lingping
2019-02-23 14:05:54
虛擬化技術--服務器虛擬化
dawei818
2019-02-23 14:05:39
windows 2008 全新仲裁模式
qyh282110204
2019-02-23 14:05:36
軟路由建立PPPOE服務器
ct19871125
2019-02-23 14:04:24
MySQL性能優化的21個最佳實踐
fdb2b
2019-02-23 14:01:03
centos下簡單實現日誌切割,並上傳至日誌服務器。
隨風上升
2019-02-23 13:59:02
python腳本簡化jar操作命令
神牛003
2019-02-23 17:41:06
apache安裝(1)
flashhand
2019-02-23 13:58:28
Centos下安裝php5.3.10
flashhand
2019-02-23 13:58:28
apache反代tomcat出現的問題
隨風上升
2019-02-23 13:57:35