Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)
一、linux服務(wù)器端配置
| 1 2 3 4 5 6 7 8 9 | [root@server?~]#?rpm?-qa?|?grep?sub subversion-libs-1.7.14-10.el7.x86_64 subversion-1.7.14-10.el7.x86_64 [root@server?~]#?ps?-ef?|?grep?svn root??????21019??20613??0?21:57?pts/0????00:00:00?grep?--color=auto?svn [root@server?~]#?mkdir?-p?/opt/svn/repo [root@server?~]#?svnserve?--version svnserve,?version?1.7.14?(r1542130) ???compiled?Nov?20?2015,?19:25:09 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | Copyright?(C)?2013?The?Apache?Software?Foundation. This?software?consists?of?contributions?made?by?many?people;?see?the?NOTICE file?for?more?information. Subversion?is?open?source?software,?see?http://subversion.apache.org/ The?following?repository?back-end?(FS)?modules?are?available: *?fs_base?:?Module?for?working?with?a?Berkeley?DB?repository. *?fs_fs?:?Module?for?working?with?a?plain?file?(FSFS)?repository. Cyrus?SASL?authentication?is?available. [root@server?~]#?svnadmin?create?/opt/svn/repo/ [root@server?~]#?cd?/opt/svn/repo/ [root@server?repo]#?pwd /opt/svn/repo [root@server?repo]#?ls conf??db??format??hooks??locks??README.txt [root@server?repo]#?cd?conf/ [root@server?conf]#?pwd /opt/svn/repo/conf [root@server?conf]#?ls authz??passwd??svnserve.conf [root@server?conf]#?vim?authz? 注:authz最后加上以下兩行(這兩行解決了?SVN客戶端解決authorization?failed問題) [/] *?=?rw [root@server?conf]#?vim?passwd? 注:passwd修改為: [users]?? admin?=?123456????//這里的username和password自己設(shè)置?? [root@server?conf]#?vim?svnserve.conf? 注:配置如下: anon-access?=?none????????????#匿名訪問的權(quán)限,可以是read,write,none,默認為read auth-access?=?write???????????#使授權(quán)用戶有寫權(quán)限 password-db?=?passwd??????????#密碼數(shù)據(jù)庫的路徑? authz-db?=?authz??????????????#訪問控制文件? realm?=?/opt/svn/repo?????????#認證命名空間,subversion會在認證提示里顯示,并且作為憑證緩存???????????????????????????????#的關(guān)鍵字 [root@server?conf]#?cd [root@server?~]#?svnserve?-d?-r?/opt/svn/ -d?表示后臺運行? -r?指定根目錄是?/opt/svn/ [root@server?~]#?ps?-ef?|?grep?svn root??????21122??????1??0?22:21??????????00:00:00?svnserve?-d?-r?/opt/svn/ root??????21124??20613??0?22:21?pts/0????00:00:00?grep?--color=auto?svn [root@server?~]#?netstat?-antlp?|?grep?svn tcp????????0??????0?0.0.0.0:3690????????????0.0.0.0:*???????????????LISTEN??????21122/svnserve |
二、linux客戶端使用介紹
1、將文件checkout到本地目錄?
| 1 2 3 4 5 6 7 | [root@server?home]#?cd [root@server?~]#?cd?/home/ [root@server?home]#?ls [root@server?home]#?svn?checkout?svn://127.0.0.1/repo????????????????#簡寫:svn?co? Checked?out?revision?0. [root@server?home]#?ls repo |
2、往版本庫中添加新的文件?
| 1 2 3 4 5 6 7 | [root@server?home]#?cd?repo/ [root@server?repo]#?ls [root@server?repo]#?touch?test.txt [root@server?repo]#?ls test.txt [root@server?repo]#?svn?add?test.txt????? A?????????test.txt |
3、將改動的文件提交到版本庫?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | svn?commit?-m?“LogMessage“?[-N]?[--no-unlock]?PATH(如果選擇了保持鎖,就使用–no-unlock開關(guān))? [root@server?repo]#?svn?commit?-m?"add?testing"?test.txt???????????????#簡寫:svn?ci? Adding?????????test.txt Transmitting?file?data?. Committed?revision?1. [root@server?repo]#?ls test.txt [root@server?repo]#?vim?test.txt? [root@server?repo]#?cat?test.txt? testing testing testing testing testing testing testing testing [root@server?repo]#?svn?commit?-m?"add?testing?something"?test.txt? Sending????????test.txt Transmitting?file?data?. Committed?revision?2. |
4、刪除文件?
svn delete path -m “delete test fle“?
例如:第一步:svn delete svn://192.168.10.151/pro/domain/test.php -m “delete test file”
第二步:svn commit
第三步:svn update ??
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推薦使用這種?
簡寫:svn (del, remove, rm)?
5、更新到某個版本?
svn update -r m path?
例如:?
svn update如果后面沒有目錄,默認將當前目錄以及子目錄下的所有文件都更新到最新版本。?
svn update -r 200 test.php(將版本庫中的文件test.php還原到版本200)?
svn update test.php(更新,于版本庫同步。如果在提交的時候提示過期的話,是因為沖突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)?
簡寫:svn up?
6、恢復(fù)本地修改?
svn revert: 恢復(fù)原始未改變的工作副本文件 (恢復(fù)大部份的本地修改)。revert:?
用法: revert PATH…?
注意: 本子命令不會存取網(wǎng)絡(luò),并且會解除沖突的狀況。但是它不會恢復(fù)?
被刪除的目錄?
7、解決沖突?
svn resolved: 移除工作副本的目錄或文件的“沖突”狀態(tài)。?
用法: resolved PATH…?
注意: 本子命令不會依語法來解決沖突或是移除沖突標記;它只是移除沖突的?
相關(guān)文件,然后讓 PATH 可以再次提交。?
8、加鎖/解鎖?
svn lock -m “LockMessage“ [--force] PATH?
例如:svn lock -m “l(fā)ock test file“ test.php?
svn unlock PATH?
9、查看文件或者目錄狀態(tài)?
1)svn status path(目錄下的文件和子目錄的狀態(tài),正常狀態(tài)不顯示)?
【?:不在svn的控制中;M:內(nèi)容被修改;C:發(fā)生沖突;A:預(yù)定加入到版本庫;K:被鎖定】?
2)svn status -v path(顯示文件和子目錄狀態(tài))?
第一列保持相同,第二列顯示工作版本號,第三和第四列顯示最后一次修改的版本號和修改人。?
注:svn status、svn diff和 svn revert這三條命令在沒有網(wǎng)絡(luò)的情況下也可以執(zhí)行的,原因是svn在本地的.svn中保留了本地版本的原始拷貝。?
簡寫:svn st?
10、查看日志?
svn log path?
例如:svn log test.php 顯示這個文件的所有修改記錄,及其版本號的變化?
11、查看文件詳細信息?
svn info path?
例如:svn info test.php?
12、比較差異?
svn diff path(將修改的文件與基礎(chǔ)版本比較)?
例如:svn diff test.php?
svn diff -r m:n path(對版本m和版本n比較差異)?
例如:svn diff -r 200:201 test.php?
簡寫:svn di?
13、將兩個版本之間的差異合并到當前文件?
svn merge -r m:n path?
例如:svn merge -r 200:205 test.php(將版本200與205之間的差異合并到當前文件,但是一般都會產(chǎn)生沖突,需要處理一下)?
14、SVN 幫助?
svn help?
svn help ci?
三、自動更新項目文件到web發(fā)布目錄(www)
1、檢出(checkout)到本地目錄是/home/repo
| 1 2 3 4 5 6 7 8 9 10 11 | [root@server?repo]#?ls index.php??test.txt [root@server?repo]#?cd?.. [root@server?home]#?ls repo [root@server?home]#?mv?repo/?www/?????#將檢出到本地的版本目錄更名為web發(fā)布目錄 [root@server?home]#?ls www [root@server?home]#?cd?www/ [root@server?www]#?ls index.php??test.txt |
2、通過腳本文件實現(xiàn)自動更新
使用SVN中post-commit實現(xiàn)自動實時從svn中檢出文件并同步到Web站點根目錄
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@server?~]#?cd?/opt/svn/repo/ [root@server?repo]#?ls conf??db??format??hooks??locks??README.txt [root@server?repo]#?cd?hooks/ [root@server?hooks]#?pwd /opt/svn/repo/hooks [root@server?hooks]#?ls post-commit.tmpl??????????post-unlock.tmpl??pre-revprop-change.tmpl post-lock.tmpl????????????pre-commit.tmpl???pre-unlock.tmpl post-revprop-change.tmpl??pre-lock.tmpl?????start-commit.tmpl [root@server?hooks]#?cp?post-commit.tmpl?post-commit [root@server?hooks]#?ls post-commit???????post-revprop-change.tmpl??pre-lock.tmpl????????????start-commit.tmpl post-commit.tmpl??post-unlock.tmpl??????????pre-revprop-change.tmpl post-lock.tmpl????pre-commit.tmpl???????????pre-unlock.tmpl [root@server?hooks]#?cp?post-commit.tmpl?post-commit [root@server?hooks]#?vim?post-commit [root@server?hooks]#?>?post-commit [root@server?hooks]#?vim?post-commit |
******************************************************************************************
| 1 2 3 4 5 6 7 8 | 輸入: #!/bin/sh export?LC_CTYPE="zh_CN.UTF-8" SVN=/usr/bin/svn WEB_PATH=/home/www?#要強制更新的目錄 SVN_USER=admin SVN_PASS=123456 $SVN?update?$WEB_PATH?--username?$SVN_USER?--password?$SVN_PASS????????????#執(zhí)行更新 |
******************************************************************************************
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@server?hooks]#?ll?post-commit -rw-r--r--.?1?root?root?220?Apr?13?00:21?post-commit [root@server?hooks]#?chmod?a+x?post-commit??#給予執(zhí)行權(quán)限 [root@server?hooks]#?ll?post-commit -rwxr-xr-x.?1?root?root?220?Apr?13?00:21?post-commit [root@server?hooks]#?cat?post-commit #!/bin/sh export?LC_CTYPE="zh_CN.UTF-8" SVN=/usr/bin/svn WEB_PATH=/home/www?#要強制更新的目錄 SVN_USER=admin SVN_PASS=123456 $SVN?update?$WEB_PATH?--username?$SVN_USER?--password?$SVN_PASS????????????#執(zhí)行更新 [root@server?hooks]#?pwd /opt/svn/repo/hooks |
注:文件/opt/svn/repo/hooks(俗稱鉤子)/post-commit屬于自動執(zhí)行。
? ? ? 本文轉(zhuǎn)自MQ_douer 51CTO博客,原文鏈接:http://blog.51cto.com/douer/1915293,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基本命令详解
- 下一篇: VisNetic MailServer