SVN服務器搭建

在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




linux下SVN忽略文件/文件夾的方法php

 

假設想忽略文件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了。

相關文章
相關標籤/搜索