SVN+post-commit 搭建自动同步版本库
一.需求.
本地文件上傳到測試環境svn,測試環境同步到生產環境rsync.開發環境與測試環境與生產環境分離.
二.搭建SVN服務器.
yum -y install subversion && which svn
1 [root@localhost ~]# which svn 2 /usr/bin/svn 1 [root@localhost ~]# svn help 2 usage: svn <subcommand> [options] [args] 3 Subversion command-line client, version 1.6.11. 4 Type 'svn help <subcommand>' for help on a specific subcommand. 5 Type 'svn --version' to see the program version and RA modules 6 or 'svn --version --quiet' to see just the version number. 7 8 Most subcommands take file and/or directory arguments, recursing 9 on the directories. If no arguments are supplied to such a 10 command, it recurses on the current directory (inclusive) by default. 11 12 Available subcommands: 13 add ##添加文件到記錄,下次提交時會使用 14 blame (praise, annotate, ann) ##追溯文件的修改信息 15 cat ##取得特定版本的某文件顯示 16 changelist (cl) ##提交的命名組17 checkout (co) ##svn減除命令 18 cleanup ##本地文件加鎖無法更新時使用 19 commit (ci) ##提交 20 copy (cp) ##賦值文件 21 delete (del, remove, rm) 22 diff (di) ##顯示特定修改的詳細信息 23 export ##導出工作目錄的樹形結構 24 help (?, h) 25 import ##導入文件到版本庫 26 info ##顯示一個目錄或文件的詳細信息 27 list (ls) ## 顯示某一個版本存在的文件 28 lock ##鎖定文件 29 log ##展示svn的版本作者,日期,路徑 30 merge ##合并文件 31 mergeinfo 32 mkdir 33 move (mv, rename, ren) 34 propdel (pdel, pd) 35 propedit (pedit, pe) 36 propget (pget, pg) 37 proplist (plist, pl) 38 propset (pset, ps) 39 resolve 40 resolved 41 revert ##本地撤銷,沒有commit之前 42 status (stat, st) ##狀態信息查看 43 switch (sw) ##把工作拷貝更新到其他目錄 44 unlock ## 解鎖文件 45 update (up) ##更新本地庫 46 47 Subversion is a tool for version control. 48 For additional information, see http://subversion.tigris.org/
創建版本庫
svnadmin create /data/svn/svnrepo? 這個命令創建一個新的版本庫,如果路徑不存在會自動創建出路徑
查看這個版本庫下的文件結構
1 [root@localhost /]# ll /data/svn/svnrepos/ 2 total 24 3 drwxr-xr-x 2 root root 4096 Dec 11 08:12 conf //配置文件 4 drwxr-sr-x 6 root root 4096 Dec 11 08:11 db 5 -r--r--r-- 1 root root 2 Dec 11 08:11 format 6 drwxr-xr-x 2 root root 4096 Dec 11 08:11 hooks 7 drwxr-xr-x 2 root root 4096 Dec 11 08:11 locks 8 -rw-r--r-- 1 root root 229 Dec 11 08:11 README.txt我們主要使用的是db庫, 新增用戶等的控制在conf
[root@localhost /]# ll /data/svn/svnrepos/conf total 12 -rw-r--r-- 1 root root 1080 Dec 11 08:11 authz //在這里創建用戶 -rw-r--r-- 1 root root 309 Dec 11 08:11 passwd //修改密碼 -rw-r--r-- 1 root root 2279 Dec 11 08:11 svnserve.conf增加用戶,配置權限,密碼
1 vi authz 2 [/] 3 lyx=rw 4 vi passwd 5 lyx=lyx 6 vi service.conf 7 去掉passwd-db 的注釋 8 去掉authz-db 的注釋 9 配置realm = /data/svn/svnrepos啟動服務器 svnserve -d (as deamon) -r (as root) /data/svn/svnrepos
1 [root@localhost conf]# ps axf | grep svn 2 1669 pts/0 S+ 0:00 | \_ grep svn 3 1643 ? Ss 0:00 svnserve -d -r /data/svn/svnreposwindows 上驗證過下
無法訪問,顯然端口號沒有開,svnserve 的端口號是3690 在本地做一個轉發.用本地13690 轉發到129 的3690 tcp
配置完之還是不行,不過提示變成了一段亂碼,顯然是有作用的. 在另一臺虛擬機中svn checkout svn://192.168.137.129報錯主機不可達,顯然是防火墻的問題,于是service iptables stop .
win上再次checkout
ok . svn 安裝配置部分done !!
三 利用svn 的post-commit 鉤子自動部署
cd /data/svn/svnrepos/hooks
mv post-commit.tmpl post-commit
chmod +x post-commit //賦予ex權限
vi post-commit
1 #!/bin/sh 2 REPOS="$1" 3 REV="$2" 4 export LANG=zh_CN.UTF-8 5 echo "Code Deployed at `date "+%Y-%m-%d %H:%M"`" >> /tmp/deploy.log 6 /usr/bin/svn update /data/web --username lyx --password lyx在 /data/web 目錄下,svn co svn://127.0.0.1 .(當前目錄)
實驗一下,本地創建文件,提交,查看/data/web 目錄是否有更新.
1 [root@localhost /]# ls /data/web/ 2 tst2.jnt tst.txt有效果,還不錯了.
四? 總結, hooks 目錄下有多種鉤子可以用了,如果你shell基礎比較好,可以編個更優秀的同步腳本啊. $1 和 $2 的變量我沒有用上,應該是有用的.
?
本站文章皆為原創,轉載請標明出處~ 任城小三爺.
?
轉載于:https://www.cnblogs.com/liuyuxing/p/5070218.html
總結
以上是生活随笔為你收集整理的SVN+post-commit 搭建自动同步版本库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unreal Engine4 蓝图入门
- 下一篇: MHA监控进程异常退出(MHA版本:0.