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入门:流程简介 安装配置 项目库配置 客户端 上线方案的主要内容,如果未能解决你的问题,请参考以下文章