工具-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 库文件。删除对应的即可。就会要求重新输入用户名密码

 5.2 修改版本备注(centos系统下):

1.  将 hook文件夹下的pre-revprop-change.tmpl 重命名为pre-revprop-change  

REPOS="$1"
REV="$2"
USER="$3"
PROPNAME="$4"
ACTION="$5"

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

echo "Changing revision properties other than svn:log is prohibited" >&2
exit 1

2. 给该文件设置可执行权限(重要)  不然修改备注会报错:

[Content]
Revprop change blocked by pre-revprop-change hook (exit code 255) with no
 output.
If you want to break the lock, use the 'Check For Modifications' dialog or the repository browser.

 

 

 

六。让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

 

htpasswd(选项)(参数)
选项

  • -c:创建一个加密文件;
  • -n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
  • -m:默认采用MD5算法对密码进行加密;
  • -d:采用CRYPT算法对密码进行加密;
  • -p:不对密码进行进行加密,即明文密码;
  • -s:采用SHA算法对密码进行加密;
  • -b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
  • -D:删除指定的用户。

参数
用户:要创建或者更新密码的用户名;
密码:用户的新密码。
实例
利用htpasswd命令添加用户

htpasswd -bc htpasswd.user admin 123456

在bin目录下生成一个 htpasswd.user 文件,用户名admin,密码:123456,默认采用MD5加密方式。

在原有密码文件中增加下一个用户

htpasswd -b htpasswd.user Jack 123456

去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。

利用htpasswd命令删除用户名和密码

htpasswd -D htpasswd.user Jack

利用htpasswd命令修改密码

htpasswd -b htpasswd.user Jack 123456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值