在Centos7上搭建SVN服務器並實現自動同步至web目錄 一、倉庫放在 /var/svn/ 目錄下,而且倉庫名爲 project 二、建立用戶組lsgogroup,該組下添加兩個成員lsgoweb一、lsgoweb2,密碼直接用用戶名,兩用戶能夠checkout代碼和提交代碼 三、利用SVN的鉤子實現當倉庫的代碼更新的時候自動同步至咱們的web目錄,在這裏,個人web目錄在 /home/www/ 下 1、搭建svn環境並建立倉庫: 一、安裝Subversion: yum install -y subversion 1 二、檢測是否安裝成功(查看svn版本號) svnserve --version 1 三、建立版本庫 //先建目錄 mkdir /var/svn cd /var/svn //建立版本庫 svnadmin create /var/svn/project cd project //會看到自動生成的版本庫文件 conf db format hooks locks README.txt 至此,svn環境搭建成功。 2、建立用戶組及用戶: 一、 進入版本庫中的配置目錄conf,此目錄有三個文件: svn服務綜合配置文件(svnserve.conf)、 用戶名口令文件(passwd)、權限配置文件(authz)。 二、修改權限配置文件:vim authz
三、配置用戶名命令文件:vim passwd
這裏寫圖片描述 四、配置SVN服務綜合配置文件svnserve.conf //找到如下配置項,將前面的#號去掉,而後作相應的配置 anon-access = none //匿名用戶訪問權限:無 auth-access = write //普通用戶訪問權限:讀、寫 password-db = passwd //密碼文件 authz-db = authz //權限配置文件 realm = /var/svn/project //版本庫所在 注意:全部以上的配置項都須要頂格,即前面不能預留空格,不然報錯 五、啓動svn服務: svnserve -d -r /var/svn 1 若是提示: svnserve: E000098: Can't bind server socket: Address already in use 1 證實如今svn已經被啓動了,因爲咱們修改了配置文件,所以要重啓svn服務 //查看svn服務詳情 ps aux | grep svn //將svn服務強制中止 其中790爲svn服務的ID號,-9是kill的參數 kill -9 790 或者用 killall svnserve 1 再運行 svnserve -d -r /var/svn,進行啓動服務 六、測試服務器: //咱們在web目錄測試(/home/www) cd /home/www svn co svn://localhost/project 若是提示:Checked out revision 1. 表示checkout成功 咱們添加新文件來測試是否提交成功 cd /home/www touch index.php svn add index.php //成功的話會顯示 A index.php svn commit index.php -m "測試提交文件" 假如最後提示: Adding index.php Transmitting file data . Committed revision 2. 則表示咱們svn服務器搭建成功!文件已經可以推送了。 七、本地拉取、推送 在本地首先要安裝SVN吧,具體百度。。。 這裏寫圖片描述 填寫信息: 這裏寫圖片描述 點擊ok,提示輸入用戶名和密碼 就填剛纔咱們建立的lsgoweb1或lsgoweb2,和對應的密碼便可。 3、實現svn更新自動同步到web目錄: 一、在web目錄中checkout版本庫 這一步算是比較關鍵的一步了,當時我搭建的時候試了無數次,就是缺乏了這一步。把剛纔checkout的版本庫刪掉,咱們來一次比較正式的checkout: svn co svn://localhost/project /home/www --username lsgoweb1(SVN帳號) --lsgoweb1(SVN密碼) 1 進入/var/svn/project/hooks下,創建post-commit文件: cd /var/svn/project/hooks vim post-commit //在該文件裏添加以下代碼,保存 #!/bin/sh #設定環境變量,若是沒有設定可能會出現update報錯 #設定語言,根據系統語言設置,若是是GBK就設置爲 LANG=zh_CN.GBK export LANG=en_US.utf8 SVN_PATH=/usr/bin/svn //這裏不用改 WEB_PATH=/home/www //web目錄,若是你的不一樣,能夠改 //這裏的用戶隨便一個就好 $SVN_PATH update $WEB_PATH --username 'lsgoweb1' --password 'lsgoweb1' --no-auth-cache 保存退出。 修改post-commit用戶爲www目錄用戶 chown apache:apache post-commit //個人 /home/www 的用戶組和全部者都是apache 1 給post-commit 執行權限: chmod 755 post-commit
假設想忽略文件templinux
1. cd到temp所在的目錄下:web
2. svn propedit svn:ignore .apache
注意:請別漏掉最後的點(.表示當前目錄),若是報錯請看下面vim
3. 打開的文件就是忽略列表文件了(默認是空的),每一行是一項,在該文件中輸入temp,保存退出bash
4. svn st查看狀態,temp的?狀態已經消除了服務器
若是在svn propedit svn:ignore .時報錯:svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was foundsocket
說明SVN的默認屬性編輯器沒有設置,設置方法以下:編輯器
vi ~/.bash_profilesvn
在最後一行追加
export SVN_EDITOR=vim
保存退出,而後輸入命令source ~/.bash_profile(使配置文件當即生效)
以上步驟完成後,繼續按照上面的方法設置
一直不知道svn的忽略命令如何使用,通過google的查找,使用方法仍是有的,作個記錄好了。若是想在SVN提交時,忽略某個文件,也就是某個文件不提交,可使用svn propedit svn:ignore命令。下面詳細介紹一下使用步驟。單純的看svn官方文檔和一些網上搜索的資料,有時候真的不如親自試驗的好。svn propedit svn:ignore 目錄名稱。注意,在使用這個SVN的屬性編輯前,你得確保後面的「目錄名稱」是SVN版本控制的目錄。若是要忽略此目錄下的文件,能夠以下操做。好比,想忽略/product目錄下的test.php文件。前提是/product目錄必須在svn版本控制下,而test.php文件不在svn版本控制。svn st先看一下狀態,會顯示以下:? /product/test.php咱們須要將test.php文件加入忽略列表。此時先設置SVN默認的編輯器export SVN_EDITOR=vim而後,使用svn propedit svn:ignore ,用法以下svn propedit svn:ignore /product此時會出現一個VIM的編輯窗口,表示須要將某個文件加入到忽略列表裏咱們在編輯窗口中,寫入test.php而後保存,並退出VIM編輯器。這時候會有一個提示:屬性 「svn:ignore」 於 「product」 被設爲新值。表示文件test.php的svn:ignore屬性設置成功。而後使用svn st查看,會顯示:M product咱們須要提交,而後這個svn:ignore屬性纔會起做用svn ci -m '忽略test.php文件'這時候,不管你如何修改test.php文件,再使用svn st時,也不會出現修改提示符合M了。