今天在Ubuntu環境下部署svn版本控制服務。
# apt-get install subversion
# mkdir /home/svn # mkdir /home/svn/repository # chmod -R 777 /home/svn/repository
# svnadmin create /home/svn/repository
查看 repository 目錄:web
# cd /home/svn/repository /home/svn/repository# ls -l total 24 -rw-r--r-- 1 root root 246 Sep 2 14:13 README.txt drwxr-xr-x 2 root root 4096 Sep 2 14:13 conf drwxr-sr-x 6 root root 4096 Sep 2 14:13 db -r--r--r-- 1 root root 2 Sep 2 14:13 format drwxr-xr-x 2 root root 4096 Sep 2 14:13 hooks drwxr-xr-x 2 root root 4096 Sep 2 14:13 locks
進入配置文件:docker
root@docker:/home/svn/repository# cd conf root@docker:/home/svn/repository/conf# ls -l total 20 -rw-r--r-- 1 root root 1080 Sep 2 14:13 authz -rw-r--r-- 1 root root 885 Sep 2 14:13 hooks-env.tmpl -rw-r--r-- 1 root root 309 Sep 2 14:13 passwd -rw-r--r-- 1 root root 4371 Sep 2 14:13 svnserve.conf
vim svnserve.conf
將如下參數去掉註釋:ubuntu
[general] anon-access = none #匿名訪問權限,默認read,none爲不容許訪問 auth-access = write #認證用戶權限 password-db = passwd #用戶信息存放文件,默認在版本庫/conf下面,也能夠絕對路徑指定文件位置 authz-db = authz
vim passwd
添加用戶名和密碼,例如vim
corwien = corwien_123
vim authz
在[group]下面加上:segmentfault
admin=corwien [/] @admin=rw
# svnserve -d -r /home/svn
查看進程是否已經開啓:bash
# ps aux | grep svnserver root 134 0.0 0.0 11460 1052 pts/1 S+ 14:22 0:00 grep --color=auto svnserver
從上面看,進程已經開啓了。服務器
咱們搭建的svn服務地址爲:svn://ip/repositorysvn
注意:默認端口是3690,要開放此端口。
post
先查一下svnserve的位置測試
which svnserve
例如返回
/usr/bin/svnserve
記住這個,後面腳本須要
開始寫腳本
cd /etc/init.d vim svn.sh
打開後寫入
#!/bin/bash /usr/bin/svnserve -d -r /home/svn
保存退出後給文件添加可執行權限
chmod +x /etc/init.d/svn.sh
打開 /etc/rc.d/rc.local
, 在新行添加
etc/init.d/svn.sh
重啓系統,看看svn有沒有啓動
進入項目svn找到hooks文件夾
root@docker:/home/svn/repository/hooks# ls -l total 36 -rwxr-xr-x 1 root root 2634 Sep 2 14:13 post-commit.tmpl -rwxr-xr-x 1 root root 2773 Sep 2 14:13 post-lock.tmpl -rwxr-xr-x 1 root root 2994 Sep 2 14:13 post-revprop-change.tmpl -rwxr-xr-x 1 root root 2605 Sep 2 14:13 post-unlock.tmpl -rwxr-xr-x 1 root root 4038 Sep 2 14:13 pre-commit.tmpl -rwxr-xr-x 1 root root 3621 Sep 2 14:13 pre-lock.tmpl -rwxr-xr-x 1 root root 3469 Sep 2 14:13 pre-revprop-change.tmpl -rwxr-xr-x 1 root root 3309 Sep 2 14:13 pre-unlock.tmpl -rwxr-xr-x 1 root root 3754 Sep 2 14:13 start-commit.tmpl
svn的hooks模版功能介紹
start-commit 提交前觸發事務 pre-commit 提交完成前觸發事務 post-commit 提交完成時觸發事務 pro-revprop-change 版本屬性修改前觸發事務 post-revprop-change 版本屬性修改後觸發事務 post-lock 對文件進行加鎖操做以後執行該腳本
示例:
chmod 755 post-commit && vim post-commit
#!/bin/sh # POST-COMMIT HOOK REPOS="$1" REV="$2" export LANG=en_US.UTF-8 SVN=/usr/bin/svn #這裏配置的是svn安裝bin目錄下的svn文件 WEB=/var/www/myweb #要更新的目錄 $SVN update $WEB --username adm --password adm chown -R www:www $WEB
進入/var/www/myweb
文件夾手動檢出一份svn版本庫下次更新svn版本就會自動更新到服務器
相關文章:
ubuntu下安裝svn
Ubuntu 14.04快速搭建SVN服務器及平常使用【轉】
SVN實踐筆記(理論概念)--版本控制