工具-svn的常用管理

环境准备:

1. centos



一. 创建仓库

svnadmin create /svn/my.test.com

二. 配置仓库

2.1

svnserve.conf文件
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = /svn
# force-username-case = none
[sasl]
# use-sasl = true
authz文件 (重要)
[groups]
phpgroup=admin,xiaoming,zhao,zhangsan,lisi,xiaomingwu
apigroup=zhao
admingroup=zhangsan
webgroup=lisi

[/]
admin=rw
*=r

[/App]
admin=rw
*=r

[/App/Api]
@apigroup=rw

[/App/Home]
@admingroup=rw
@webgroup=rw

[/App/Mobile]
@admingroup=rw
@webgroup=rw

[/App/Manage]
@admingroup=rw
@webgroup=rw

[/avatar]
admin=rw
*=r
[Data]
admin=rw
*=r
[/Include]
admin=rw
*=r
[/Public]
admin=rw
@webgroup=rw
*=r
[/uploads]
admin=rw
*=r

分了三个小组:api组,后台管理组, web前段开发组,用thinphp 框架目录结构做了相关的目录权限划分;


passwd文件
[users]
admin=sally
xiaoming=xiaoming
zhao=zhao
zhangsan=zhangsan
zhuwen=zhuwen
xiaomingwu=xiaomingwu

三. 运行

svnserve -d -r /svn/my.test.com --listen-port 20003

回车后这时就建立了svn://你的ip地址:20003链接了。

我用TortoiseSVN 工具 将项目checkout 到 D:\workspace_php\test目录下



四. 本地与测试服务器同步

 4.1 centos 下使用命令迁出到 项目目录下

svn co svn://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名 --password 密码

  

4.2 修改svn配置文件hooks/post-commit文件

#!/bin/sh
WEBSITE="/data/wwwroot/my.test.com"
export LANG=zh_CN.UTF-8
#echo "code update  at `date " +%Y-%m-%d %H:%M"`" >> /svn/temp.log
svn update --username admin --password sally $WEBSITE


4.3 post-commit 增加可执行权限


配置web服务器能http://my.test.com ,目录这里为/data/wwwroot/my.test.com   

在本地增加修改项目文件, http://my.test.com 也会跟着变。除非有冲突出现。


五。常见问题

   5.1 SVN 重新输入SVN用户名密码:

%appdata% /Subversion\auth\svn.simple 下有对应的svn 库文件。删除对应的即可。就会要求重新输入用户名密码


六。让SVN支持http协议

 假设我们已经能通过  svn://yourip:20003  能访问了,如何支持http协议呢?                

 1. 下载apache 

 2.  修改配置文件  

机器已经运行了nginx,为避免80端口冲突 并且已经将20000-200500 之间的端口不会被防火墙拦截。所以我将apache端口设为20000

  我发现httpd.conf文件 会默认访问conf.d 文件夹下面的conf文件 和conf.modules.d文件夹下的.conf

conf.modules.d 文件夹已经 存在10-subversion.conf

内容为:

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so

所以在conf.d目录下创建的  subversion.conf内容如下:

重点说下这个配置文件,如果你访问svn的http协议 出现空白,很有可能和这个配置文件有关系。

/svn存在product_design 和 project2 两个版本库,

单独访问 某个项目 用如下配置  (Location后面的路径和SVNPath 一致),http://ip/svn/prudct_design 可以访问 ; 访问https://ip/svn/project2 不可以访问

<Location /svn/product_design>  
        DAV svn
        #SVNparentPath /svn
        SVNPath /svn/product_design
        #SVNListParentPath on
        AuthType Basic
        Satisfy Any
        Authname "pd"
        AuthUserFile /svn/product_design/conf/passwd_http
        AuthzSVNAccessFile /svn/product_design/conf/authz
        Require valid-user
</Location>

<Location /svn>   // 访问http://ip/svn  出现svn - Revision 几个字后其余一片空白 
        DAV svn
        #SVNparentPath /svn
        SVNPath /svn/product_design
        #SVNListParentPath on
        AuthType Basic
        Satisfy Any
        Authname "pd"
        AuthUserFile /svn/product_design/conf/passwd_http
        AuthzSVNAccessFile /svn/product_design/conf/authz
        Require valid-user
</Location>


<Location /product_group>
	DAV svn
	#SVNparentPath /svn
	SVNPath /svn/product_design
	#SVNListParentPath on
  	AuthType Basic
	Satisfy Any
	Authname "pd"
	AuthUserFile /svn/product_design/conf/passwd_http
	AuthzSVNAccessFile /svn/product_design/conf/authz
	Require valid-user
</Location>
<Location /svn> // http://ip/svn/product_design 可以访问 http://ip/svn/project2也可以访问
        DAV svn
        SVNparentPath /svn
        #SVNPath /svn/product_design
        #SVNListParentPath on
        AuthType Basic
        Satisfy Any
        Authname "pd"
        AuthUserFile /svn/product_design/conf/passwd_http
        AuthzSVNAccessFile /svn/product_design/conf/authz
        Require valid-user
</Location>
相关链接: SVNPath 与 SVNParentPath区别http://blog.chinaunix.net/uid-29063464-id-4147612.html


 passwd_http 使用 htpasswd 命令生成


重启 apache:/usr/sbin/apachectl  restart

猜你喜欢

转载自blog.csdn.net/sfmcatl/article/details/79398282