在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了。