SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案相关的知识,希望对你有一定的参考价值。

查看警告:show warnings;  备份库结构:mysqldump 库 -add-drop-table  >  路径

添加用户:grant select,insert on 库名 to ‘用户名‘@‘172.8.8.8‘ identified by ‘密码‘;flush privileges

所有权限:grant all privileges on *.* to ‘name‘@‘%‘ identified by ‘mima‘;      ---- 小 Q

-----------------------------------------------------------------------------------------------------

【简介 流程 与运维 模式 优缺点】

SVN:subversion 一个跨平台的开源版本控制系统,管理着随时间变化的各种数据,放置在中央版本库(很像文件服务器或FTP服务器),并且会备份文件的每一次变动,方便有bug后回滚版本。

存储方式:

BDB--Berkeley DB,事物安全表类型,通过后台关系数据库实现,服务器中断时有可能锁数据;

FSFS--二进制文件,用于文件系统后端,可使用NFS等,不需要数据库存储,但两种都没有实体文件。

工作流程:

① 在中央库创建或从主干复制一个分支;
② 从中央库check out下这个分支的代码;
③ 增加自己的代码文件,修改现存的代码或删除代码的文件;
④ commit代码,假设有人在刚刚的分支上提交了代码,你就会被提示代码过期,你得先update一下然后再提交。,up代码的时候如果出现了冲突,需要解决好冲突之后再进行提交。

举例研发使用SVN的一天:

① 首先从SVN服务器下载项目组最新代码;
② 进入自己的分支进行开发,每隔一小时向服务器提交自己的分支的代码(方便回查);
③ 下班时间到了,把自己的分支合并到服务器主分支上,一天的工作完成,并反映给服务器;

运维必备:

运维不需要跟开发一样经常去用SVN,但管理系统的运维人员需掌握

1、安装、部署、维护、排障;

2、简单实用,虽然大多公司都由开发来管理,比如创建仓库、增删账号;

3、简单理解,运维就是开发商,开发等人员就是业主,运维将服务搭建起来供开发使用。

访问模式:
1、独立服务器访问,如:svn://ip(域名)/库名

2、借助http服务,例如:http://ip(域名)/库名 (单独安装apache+svn 或 安装web界面管理的CSVN)

3、直接本地访问,例如:file://application/svndata/库名
优点 缺点:

1、每次提交都保留原始副本,SVN数据量会暴增;

2、若连接不到svn服务器,基本都不可以工作;

3、在开源系统开发时,很多人运行的并不好。

a、普及度高,使用简单,界面化,而且教材多;

b、管理方便,逻辑清晰,适于开发人数不多的项目;

c、代码一致性很高,集中式svn服务在某方面保证了数据的安全;

【配置安装】

一般功能性的东西,直接yum安装即可,除非有特殊需求,否则不需要编译。

检查:rpm  -qa |grep subversion

安装:yum install  -y subversion

===========================================================

yum安装rpm包后本地不清除的方法:sed -i ‘s#keepcache=0#keepcache=1#g‘ /etc/yum.conf

===========================================================

yum安装后会有几个命令:svn 两下tab就出来了

svn  svnadmin  svndumpfilter  svnlook  svnrdump  svnserve  svnsync  svnversion

首先创建数据存储目录,要根据线上环境需求搭建,我们是实验就无所谓了;

mkdir  -p  /svn/{svndata,svnpasswd}

技术分享

启动:svnserver -d -r /svn/svndata/

检查:ps aux|grep svn     lsof -i:3690  (端口可自定义)

重启:pkill svnserver;svnserver -d -r /svn/svndata/

创建项目版本库:

命令:svnadmin create /svn/svndata/sadoc   //创建了sadoc项目库,不能再用mkdir的思路了

技术分享

记录下项目库最初的树状图,conf(配置文件)、db(版本记录)、hook(钩子)、lock(锁)

技术分享

【项目库权限问题】

cd  /svn/svndata/sadoc/conf

cp svnserver.conf svnserver.conf_bak   //操作前备份是运维的好习惯

sed -i ‘s/# auth-access = write/auth-access = write/g‘ svnserver.conf
sed -i ‘s/# aono-access =read/anon-access = none/g‘ svnserver.conf
sed -i ‘s%# password-db = passwd%password-db = /svn/svnpasswd/passwd%g‘ svnserve.conf
sed -i ‘s%# authz-db = authz%authz-db = /svn/svnpasswd/authz%g‘ svnserver.conf

默认访问密码,都是在各自项目库的配置文件下,但如此可以方便管理,根据自己情况来,不强制。

cp  passwd authz  /svn/svnpasswd/

chmod  700  /svn/svnpasswd   //安全考虑,当然还可以再次加密,根据自己来

vim  /svn/svnpasswd/passwd   //添加用户,密码

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
# harry = harryssecret
# sally = sallyssecret
tengxun = 123456      #等号前用户名,等号后是明文密码
docuser = 654321      #更改配置文件要重启服务,更改authz和passwd则不用

vim  /svn/svnpasswd/authz   //设置用户或组访问权限

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorizationfiles.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the ‘$authenticated‘ token,
###  - only anonymous users, using the ‘$anonymous‘ token,
###  - anyone, using the ‘*‘ wildcard.
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

yanfa = a,b,tengxun    #定义用户组,用户间逗号分隔
[sadoc:/]         #格式:[版本库:/项目/目录]------[/]表示根目录下,即svn启动时指定的/svn/svndata
                  #[repo:/sadoc]表示对repo版本库中的sadoc项目设置权限
@yanfa = rw       #用户组前要加@
docuser = r       #r,w,rw, ,分别表示读,写,读写,空;用户必须在配置文件中定义过

重启:pkill  svnserver;svnserver -d -r /svn/svndata/sadoc/

【客户端访问】

SVN服务器不是简单将文件一个一个存储起来的,默认用的FSFS格式存储增量内容,打包成一个文件;

windows客户端:

参考:http://jingyan.baidu.com/article/0aa223758081b788cc0d64e7.html 

1、下载TortoiseSVN 和汉化包补丁,安装;

2、安装好后,创建对应项目的的文件夹,右键选择svn检出(check.out),输入url和保存路径,如下图

技术分享

3、输入用户名,密码;在文件夹中放点文件,和目录什么的;右键选择SVN 提交(commit),如下

技术分享

技术分享


4、同步后,可以直接本地查看是否同步到服务端,右键选择TortoiseSVN→版本浏览器(Repo Browser)

技术分享

5、每回使用时我们要右键svn 更新(update),确保内容最新。

注:删除文件也是如此操作,提交同步。

问:版本库地址发生了变化,怎么办?

选择文件夹右键 TortoiseSVN→重新定位(Relocate),输入新地址即可。

windows内,有一个svn缺省目录,包含三个认证文件

svn.simple:包含基本认证方式的认证信息,通过wincrypt API加密

svn.ssl.server:包含ssl服务器证书

svn.username:包含用户认证的认证信息

技术分享

Linux客户端:

检出项目库:svn co svn://10.0.18.33/sadoc  /data/svndata/sadoc --username=? --password=?

本地检出:svn co file://svn/svndata/sadoc/

error:svn:Can‘t convert string from ‘UTF-8‘ to native encoding  //解决如下

or:export LC_CTYPE="zh_CN.UTF-8"
or:export LC_CTYPE="zh_CN.GB2312"
or:export LANG="zh_CN.UTF-8" (变量名不同的话)

or:export LC_CTYPE="en_US.UTF-8" ;export LC_ALL=

更新项目库:svn update svn://10.0.18.33/sadoc  /data/svndata/sadoc --username=?

查看项目库:svn ls svn://10.0.18.33/sadoc  --username=? --password=? --verbose

添加文件:svn add 文件/目录名

提交文件:svn ci -m "commit data"   //提交后,项目库版本便升了一位数

(-m [--message] ARG  : 指定日志信息ARG   //不添加这个-m参数是会报错的!)

项目目录规范:

mkdir -p /data/svndata/sadoc/name/{trunk,branch,tag}   //{主干,分支,版本标记}

commit:把工作副本的修改提交到版本库;

add:将文件或目录乃如版本控制,下次提交时加入;

import:将未纳入版本控制的文件或目录,提交到版本库控制中。

纳入项目库:svn import /data/svndata/sadoc/name svn://10.0.18.33/sadoc -m "import"

附加:把主干的东西拷贝到一个分支,不太常用

svn copy svn://10.0.18.33/sadoc/trunk svn://10.0.18.33/sadoc/branch/branch1 -m "create a branch"

【企业上线方案】

小型企业(图左)

1、一般公司人员少,为了方便都随时随地更新,发布快;

2、经常不经测试人员测试就上线,拿用户来测试,用户体验较差;

3、据统计网站中50%的故障都是和代码有关,但都是运维人员承担责任。

建议:

a、个人电脑搭建LNMP环境进行测试代码,并有专职人员在测试服务器测试;

b、规定代码上线时间,比如三天一上线,满足需求的同时也要有原则,一切为了客户体验度;

c、上线之前要备份,出了问题方便回滚(新浪做法:先传到临时目录,再直接mv过去,或做软链)

d、上线操作由运维操作,否则开发随意更新上传,出了问题运维负责,这样太不科学了。

技术分享技术分享

中型企业(图右)

拥有严格的流程,上线完全由运维负责,制定统一的上线脚本、备份脚本、回滚脚本,降低损失。




本文出自 “北冰--Q” 博客,请务必保留此出处http://beibing.blog.51cto.com/10693373/1864741

以上是关于SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案的主要内容,如果未能解决你的问题,请参考以下文章

SVN的安装和配置

(转)SVN 服务端客户端安装及配置导入导出项目

android studio怎么配置svn忽略文件

Git客户端图文详解如何安装配置GitHub操作流程攻略

SVN详细配置与使用 ——一步步教会您使用

Maven01——简介安装配置入门程序项目构建和依赖管理