SVN学习笔记

现在用linux部署项目,感觉 没有SVN来进行远程版本控制,多少觉得还是有些不方便,所以今天就亲手在 服务器搭建一个SVN服务器,把过程保存记录在此博客上,秉承分享精神
1首先,安装:
 . 执行命令:yum install subversion

2安装完成后,检测是否安装成功,以及版本号:
.执行命令:svn --version
我的个人会出现如下提示,表明安装成功,版本是1.6.11:
SVN学习笔记_第1张图片
3.现在开始搭建svn仓库:
执行下面两个命令:
  (1)mkdir  -p  /opt/svn/repos
   (2)  svnadmin  create  /opt/svn/repos
执行成功后,在 /opt/svn/repos文件夹下即可看到repos下有生成了多个文件,如下图
SVN学习笔记_第2张图片
4.现在开始进入conf文件夹下开始配置:
authz文件是对用户权限的控制,passwd是设置用户名和密码,svnserve.conf是针对svn的配置

4.1先设置passwd,新建用户名和密码:
SVN学习笔记_第3张图片
4.2再设置authz权限,给刚创建的gan用户添加完全的读写权限。如图: SVN学习笔记_第4张图片

5.最后设定svnserve.conf配置
anon - access  =  none # 使非授权用户无法访问
auth
- access  =  write # 使授权用户有写权限
password
- db  =  password
authz
- db  =  authz   # 访问控制文件
realm 
=   / opt / svn / repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
采用默认配置. 以上语句都必须顶格写, 左侧不能留空格, 否则会出错.

6.文件配置到此基本上就OK了,现在开始启动我们的svn服务器:
    执行命令:svnserve -d -r /opt/svn/repos
查看服务是否起来:
  执行命令: netstat -tunlp | grep svn
centos搭建SVN实录,并部署项目

7.现在window安装svn客户端TortoiseSVN,输入远程链接:svn://服务器iP地址/repos,再输入用户名和密码:gan   123456即可链接

二:部署项目到SVN上,实现本地更新同步到服务器项目:配置项目仓库的钩子配置
可以把钩子看成是WEB项目于SVN项目仓库之间的一个关联,通过向SVN项目仓库提交脚本代码,利用钩子shell脚本可以自动向web项目中将脚本文件更新过去

开始之前,首先我已经在win客户端的tortoiseSVN先建立好项目文件目录www了,如下图
SVN学习笔记_第5张图片


1.进入SVN项目仓库钩子所在的目录,shell命令:cd /opt/svn/repos/hooks/,
然后复制备份post-commit文件:cp post-commit.tmpl post-commit
centos搭建SVN实录,并部署项目

OK,假设我的项目文件我是假设放在/home (建议放在nginx的web目录下)
为了能够让SVN仓库同步将项目更新过来,那么首先需要从仓库checkout出项目到home目录下面,
分别执行shell命令:
   cd /home
   svn co svn://localhost/www --username gan --password 123456
此时在home目录下你将会看到你checkout出来的项目了,接下来要开始写触发脚本,实现在win本地上传更新你的项目文件的同时,同步更新仓库内的文件。
在/opt/svn/repos/hooks目录下打开post-commit文件, 屏蔽里面所有的未屏蔽代码,在文件最后写入:
cd /home/www
/usr/bin/svn cleanup
/usr/bin/svn up /home/www  --username "gan" --password "123456"


OK,最后保存退出,然后在你的window本地的tortoiseSVN客户端上传一个文件到www目录下,即可发现服务器的/home/www目录也会出现该文件。
( 若出现:post-commit错误代码255,应该是脚本权限不对,赋予777权限即可)
到此整个部署就结束了

如果没有反应,会有两个地方可能出错:
1)配置文件与路径写得不对,可以直接通过手工方式去执行post-commit看看有没有报错。
2)权限不对。即/home权限是否足以满足脚本的读写。

最后,剩下的就是在自己的开发IDE安装好SVN插件,然后获取出项目,即可同步保存了,此时,服务器上的也可同步了。
我假设大家已经安装好SVN插件了,现在我以zendstudio 这个PHP的IDE为例,首先假设我要将我的项目放在我仓库下wwwroot目录下面,如图:
SVN学习笔记_第6张图片
然后在你的IDE下,选择一个项目,右键单击选择Team->share project就会弹出选择分享的类型,我本地也装了git,所以会有git选项,选择SVN,并点击下一步,
SVN学习笔记_第7张图片

第一次使用,就选择创建新的资源库位置,下一步;

SVN学习笔记_第8张图片

OK,到了这里,因为我们要把项目放到wwwroot目录下面,所以URL写好
svn://你的服务器IP/wwwroot(这是你所要放得目录)

SVN学习笔记_第9张图片

最后一直往下点击下一步即可,假设我上传的项目名称是weixin.,,接下来要做的就是将他同步更新到服务器仓库的同时,能够同步更新到我的web目录下,实现我在IDE操作,同时更新我的web目录,随时查看到效果
 1.先用shell命令检出我的weixin项目到我的web目录(/home/wwwroot)下:
  cd /home/wwwroot/
   svn co svn://localhost/wwwroot/weixin --username gan --password 123456

检出成功之后,在你的IDE添加你的新文件,然后提交,即可看到你的web目录下也同时更新了

现附上有可能会出现的问题(网络来源)

一问一答:
问:安装好svn服务后在windows下用svn客户端连接不上svn服务器?
答:一般是centos中SVN的3690端口没有打开,使用下面方法

[html]  view plain copy
  1. [root@vm-moodle ~]#iptables -I INPUT -p tcp --dport 3690 -j ACCEPT  #开放3690端口  
  2. [root@vm-moodle ~]#/etc/rc.d/init.d/iptables save                  #保存配置,非常重要   
  3. [root@vm-moodle ~]#/etc/init.d/iptables status   # 查看是否已经成功:  


问:配置基于svnserve的subversion服务器后,在客户端访问subversion版本库时出现这个错误:svnserve.conf:12: Option expected;为什么会出现这个错误呢?
答:因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件。看下面的配置文件。

[html]  view plain copy
  1. [general]  
  2. ### These options control access to the repository for unauthenticated  
  3. ### and authenticated users. Valid values are "write", "read",  
  4. ### and "none". The sample settings below are the defaults.  
  5. anon-access = read  
  6.   auth-access = write  


在上面的配置文件中,anon-access是顶行的,没问题,而auth-access就存在前置空格,会导致这个错误。
要避免出现这个错误,应该在去掉这些行前的#时,也要顺手去掉前面的空格.

问:如何输入TortoiseSVN的用户名、密码?
答:很多时候,为了方便,我们在使用Tortoise时,会勾选密码输入框那里的保存验证信息。但是当我们想换一个用户登录时,却可能发现不知道怎么换用户进行登录。Tortoise的用户名密码等认证信息都是缓存在客户端文件系统的这个目录:
C:/Documents and Settings/Administrator/Application Data/Subversion/auth
删除auth下面的所有文件夹,重新连接远程服务器进行检出,对话框就会出现!

你可能感兴趣的:(SVN学习)