#!/bin/sh REPOS="$1" REV="$2" export LANG=en_US.UTF-8 LOG_PATH=/tmp/svn.log echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH /usr/bin/svn co svn://39.102.74.157/test /usr/share/nginx/html/svn/svnrepos/test/ /usr/bin/svn update /usr/share/nginx/html/svn/svnrepos/test/ -username shanzezhao --password 123456 chown -R 777 /usr/share/nginx/html/svn/svnrepos/test/子曰:“學而不思則罔,思而不學則殆”;
centos作業系統下安裝svn:
1.查詢是否安裝
rpm -qa subversion
如果想刪除svn執行
yum remove subversion
2.如果沒有使用則執行以下操作
yum -y install subversion
3.此命令會全自動安裝svn伺服器相關服務和依賴,安裝完成會自動停止命令執行
若需檢視svn安裝路徑,可以用以下命令:
rpm -ql subversion
4.建立版本庫目錄(此僅為目錄,為後面建立版本庫提供存放位置)
本人選擇在/usr/share/nginx/html/svn路徑下建立版本庫,當前處於根目錄下,一次性建立如下:
mkdir /usr/share/nginx/html/svn/svnrepos
5.建立svn版本庫
在上邊建立的路徑基礎上,建立版本庫,命令如下:
svnadmin create /usr/share/nginx/html/svn/svnrepos/test
(test為你預期的版本庫名稱,可自定義)
6.建立成功後,進入test目錄下
cd /usr/share/nginx/html/svn/svnrepos/test
7.進入目錄,可以看見如下檔案資訊:
8.修改配置
cd /usr/share/nginx/html/svn/svnrepos/test/conf
9. cd conf目錄下,一共存放三份重要的配置檔案,如下:
authz:負責賬號許可權的管理,控制賬號是否讀寫許可權
passwd:負責賬號和密碼的使用者名稱單管理
svnserve.conf:svn伺服器配置檔案
10.修改這三個檔案
vi authz
只需在末尾新增,無需在檔案其他部分修改和新增任何東西,末尾內容如下:
[\]
賬號1 = rw
賬號1 = rw
#切記!如果先設定成這樣的[\]的話 伺服器後邊svn提交更新的時候報錯 請修改成[/]就好了
rw表示賦予此賬號可讀寫的許可權
11.修改passwd檔案資訊
vi passwd
賬號密碼檔案無需做修改,也是直接將賬號和密碼資訊追加到檔案中即可,注意格式為:
賬號 = 密碼
例如:test= 123456
12.修改svnserve.conf(重要)
#authz-db = authz 如果此條去掉後,雖然svn伺服器可以連線,但一直會提示“認證失敗”,註釋掉即可正常
realm = My First Repository去掉註釋即可,無需做任何修改
到此,配置已經全部完成,賬號資訊已經新增成功
13.防火牆 關閉就可以 如需開啟防火牆的狀態按照一下操作
find / -name iptables
本人的是這個 你們可以搜一下你們的
usr/sbin/iptables -I INPUT -p tcp --dport 3690 -j ACCEPT /etc/init.d/iptables save service iptables restart
14.啟動svn伺服器
svnserve -d -r /usr/share/nginx/html/svn/svnrepos
啟動成功後,可用ps -aux檢視服務啟動是否成功
15.自動更新部署 (搭建svn都不是僅僅為了把程式碼存到倉庫,而是同步部署到對應的專案。)
在 /usr/share/nginx/html/svn/svnrepos/test/hooks目錄的 hooks 裡面有一堆tmpl,今天我們就說一下自動部署post-commit.tmpl,
tmpl檔案是模版檔案,我們要用post-commit需要手動複製對應tmpl裡面的內容到新的post-commit裡面。
cd /usr/share/nginx/html/svn/svnrepos/test/hooks
cp post-commit.tmpl post-commit
使用ftp軟體開啟 剛剛新建的post-commit 檔案,清空檔案
16.修改post-commit檔案
然後開啟檔案清空內容,修改為以下程式碼:
#!/bin/sh #其中第一行意思是:用sh來解析這個指令碼,因為各種shell的語法有細微的差別 REPOS="$1" REV="$2" export LANG=en_US.UTF-8 #第二行是編碼格式:這裡我使用的是UTF-8 有的是GBK格式會報錯!! LOG_PATH=/tmp/svn.log echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH #這是一個操作日誌 可加可不加 /usr/bin/svn co svn://39.102.74.157/test /usr/share/nginx/html/svn/svnrepos/test/ /usr/bin/svn update /usr/share/nginx/html/svn/svnrepos/test/ --username test --password 123456
#最後一行/usr/bin/svn
是svn的路徑,不是專案路徑,應該都是一樣的,後半句分別是使用者名稱、密碼、和專案路徑。--username
這個比較坑了,前面其實是兩個減號,英文輸入法下的 chown -R 777 /usr/share/nginx/html/svn/svnrepos/test/
#!/bin/sh REPOS="$1" REV="$2" export LANG=en_US.UTF-8 LOG_PATH=/tmp/svn.log echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH /usr/bin/svn co svn://39.102.74.157/test /usr/share/nginx/html/svn/svnrepos/test/ /usr/bin/svn update /usr/share/nginx/html/svn/svnrepos/test/ -username shanzezhao --password 123456 chown -R 777 /usr/share/nginx/html/svn/svnrepos/t