🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# :-: linux系统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行后面 ```php 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是拷贝的项目目录 ```php 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个配置项: ```php anon-access: 控制非鉴权用户访问版本库的权限。 取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值(默认):read ``` ```php auth-access: 控制鉴权用户访问版本库的权限。 取值范围为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"表示无访问权限。 缺省值(默认):write ``` ```php password-db: 指定账号密码的文件名。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值(默认):passwd ``` ```php authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径。 缺省值(默认):authz ``` ```php realm: 指定版本库的认证域,即在登录时提示的认证域名称。 若两个版本库的认证域相同,建议使用相同的用户名口令数据文件。 缺省值(默认):一个UUID(Universal Unique IDentifier,全局唯一标示)。 ``` ```php 示例: anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /svndata/name/ ``` #### 2、`passwd`文件 * 该文件设置用户的账号密码 * 密码为未经过任何处理的明文 ```php 示例: ouyangke=123456 // 欧阳克的账号:ouyangke 密码:123456 huangrong=123456 // 黄蓉的账号:huangrong 密码:123456 ``` #### 3、`authz`文件 * 该文件设置组和用户的权限 * / 是svn根目录 * ouyangke 是账号 * r 只读 * rw 读写 * *= 其他用户无权限 ```php [/] ouyangke=rw *= ``` --- * 启动 svn > svnserve -d -r /svndata/svn * 关闭 svn > killall svnserve * 删除版本库 > 很多人不知道怎么删除其中一个svn版本库,直接删除库目录 * 卸载svn > rpm -e subversion ***** ### :-: 五、linux系统编辑文件 * 有时候,我们放假,在外地玩,可能突然代码有问题,这个时候,找台电脑,需要安装很多软件,我们就需要在线编写代码。 * 很多平台都提供了 手机app连接 linux系统的功能。我们以此作为媒介。 * 如果你的代码没有svn,也可以使用 宝塔或wdcp面板,直接线上修改。 > 备:`linux`服务器安装了`Subversion`,都可以使用此方法 1、连接svn ```linux svn checkout svn://127.0.0.1/svndata/name /www/name ``` 2、更新文件 ```linux # 进入name目录下 svn update ``` 3、新增文件 ```linux # 文件名也可以是一个目录+文件名 svn add 文件名 ``` 4、上传文件 ```linux svn commit -m `备注` 文件名 ``` * 新文件,必须先新增文件 * 如果上传文件失败,执行linux命令,改变环境变量: * export SVN_EDITOR=vim