• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

没有了
Prev

svn 搭建

Data: 2016-09-22 07:48:28Form: JournalClick: 11

# svn 搭建

  • 适合 centos linux 使用,其他公司版本的 linux 未测试
  • 源代码的管理,为了解决在软件开发过程中,由源代码引发的各种蛋疼、繁琐的问题
  • svn 分两个版本:
    • Subversion 服务端,安装在 linux 里,管理 svn
    • TortoiseSVN 客户端,安装在 windows 里

源代码会引发哪些问题?

  • 无法后悔:做错了一个操作后,没有后悔药可以吃
  • 版本备份:费空间、费时间
  • 版本混乱:因版本备份过多造成混乱,难于找回正确的想要的版本
  • 代码冲突:多人操作同一个文件(团队开发中的常见问题)
  • 权限控制:无法对源代码进行精确的权限控制
  • 追究责任:出现了严重的 BUG,无法得知是谁干的,容易耍赖

# 一、安装 svn

# 1、安装命令

  • centos 自带 yum 方法,使用 yum 方法安装 svn

yum -y install subversion

# 2、指定 svn 版本库目录

  • mkdir 新建目录
  • svnserve 设置 svn 版本库

mkdir /svndata svnserve -d -r /svndata

# 3、创建版本库

  • name 是你的项目的目录名称

svnadmin create /svndata/name


# 二、配置 svn

# 1、配置svnserve.conf文件

  • 进入项目里的 conf 目录

cd /svndata/name/conf

  • 打开 svnserve.conf 文件,vi 命令是系统自带的

vi svnserve.conf

  • 以下配置放在 svnserve.conf 文件里的 20 行后面
anon-access=none
auth-access=write
password-db=passwd
  • 保存文件

# 2、配置passwd文件

  • 打开 passwd 文件,也在 conf 目录下

vi passwd

  • 在后面一行输入账号=密码

ouyangke=123456

  • 保存文件

# 3、连接 svn

  • 完成以上配置,就可以用 windows 电脑连接 svn
  • windows 电脑必须安装 svn 软件
  • windows 电脑-》右击 svn 检出-》输入 svn://ip 地址/name-》弹出账号密码输入框

# 三、svn 同步脚本

  • 同步的目的是:更新代码后,服务器中的项目自动更新同步

# 1、拷贝项目

  • 拷贝要同步的项目,到网站目录文件中

svn co svn://localhost/name /www/name

# 2、建立同步脚本

  • 先复制一份同步脚本

cd /svndata/name/hooks/ cp post-commit.tmpl post-commit

# 3、编辑同步脚本

vi post-commit

  • BASEPATH 是拷贝的项目目录
REPOS="$1"
REV="$2"

BASEPATH=/www/name
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
svn update $WEBPATH --username ouyangke --password 123456 --no-auth-cache

# 4、执行脚本

  • 执行脚本

chmod +x post-commit

  • 关闭 svn

killall svnserve

  • 开启 svn

svnserve -d -r /svndata


# 四、配置文件介绍

# 1、svnserve.conf文件

  • 该文件有 5 个配置项:
anon-access:
    控制非鉴权用户访问版本库的权限。
    取值范围为"write""read""none"。
    即"write"为可读可写,"read"为只读,"none"表示无访问权限。
    缺省值(默认):read
auth-access:
    控制鉴权用户访问版本库的权限。
    取值范围为"write""read""none"。
    即"write"为可读可写,"read"为只读,"none"表示无访问权限。
    缺省值(默认):write
password-db:
    指定账号密码的文件名。
    除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
    缺省值(默认):passwd
authz-db:
    指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
    除非指定绝对路径,否则文件位置为相对conf目录的相对路径。
    缺省值(默认):authz
realm:
    指定版本库的认证域,即在登录时提示的认证域名称。
    若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。
    缺省值(默认):一个UUID(Universal Unique IDentifier,全局唯一标示)
示例:
    anon-access = none
    auth-access = write
    password-db = passwd
    authz-db = authz
    realm = /svndata/name/

# 2、passwd文件

  • 该文件设置用户的账号密码
  • 密码为未经过任何处理的明文
示例:
    ouyangke=123456     // 欧阳克的账号:ouyangke 密码:123456
    huangrong=123456    // 黄蓉的账号:huangrong 密码:123456

# 3、authz文件

  • 该文件设置组和用户的权限
  • / 是 svn 根目录
  • ouyangke 是账号
  • r 只读
  • rw 读写
  • *= 其他用户无权限
    [/]
    ouyangke=rw
    *=

# 4、启动 svn

svnserve -d -r /svndata/svn

# 5、关闭 svn

killall svnserve

# 6、删除版本库

很多人不知道怎么删除其中一个 svn 版本库,直接删除库目录

# 7、卸载 svn

rpm -e subversion


# 五、linux 系统编辑文件

  • 有时候,我们放假,在外地玩,可能突然代码有问题,这个时候,找台电脑,需要安装很多软件,我们就需要在线编写代码。
  • 很多平台都提供了 手机 app 连接 linux 系统的功能。我们以此作为媒介。
  • 如果你的代码没有 svn,也可以使用宝塔,直接线上修改。

备:linux服务器安装了Subversion,都可以使用此方法

# 1、连接 svn

svn checkout svn://127.0.0.1/name /www/name

# 2、更新文件

# 进入name目录下
svn update

# 3、新增文件

# 文件名也可以是一个目录+文件名
svn add 文件名

# 4、上传文件

svn commit -m `备注` 文件名
  • 新文件,必须先新增文件
  • 如果上传文件失败,执行 linux 命令,改变环境变量:
    • export SVN_EDITOR=vim
Name:
<提交>