技巧整顿
- SVN版本自动更新揭示
- SVN补交log
- 配置SVN反对http协定拜访
svn装置
第一步,搭建svn服务器(在centos7环境下)
先查看svn是否装置
svn --version
若没有,则
yum intall subversion -y
在运行一次svn --version
确认胜利
接下来咱们就在服务器创立一个文件夹,用来寄存svn版本库。
创立文件夹/home/svn
mkdir /home/svn
创立一个svn仓库
svnadmin create /home/svn/project
能够看到svn版本库创立胜利
ls /home/svn/project
上面须要批改这个版本库配置
cd /home/svn/project
1.批改conf/svnserve.conf
vi svnserve.conf
[general]anon-access = noneauth-access = writepassword-db = passwdauthz-db = authzrealm = My First Repository
- anon-access: 管制非鉴权用户拜访版本库的权限,取值范畴为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"示意无拜访权限。 默认值:read
- auth-access: 管制鉴权用户拜访版本库的权限。取值范畴为"write"、"read"和"none"。 即"write"为可读可写,"read"为只读,"none"示意无拜访权限。 默认值:write
- authz-db: 指定权限配置文件名,通过该文件能够实现以门路为根底的访问控制。 除非指定绝对路径,否则文件地位为绝对conf目录的相对路径。 默认值:authz
- realm: 指定版本库的认证域,即在登录时提醒的认证域名称。若两个版本库的 认证域雷同,倡议应用雷同的用户名口令数据文件。 默认值:一个UUID(Universal Unique IDentifier,全局惟一标示)。
- 配置用户名和明码
vi passwd
用户名口令文件由svnserve.conf的配置项password-db指定,默认为conf目录中的passwd。该文件仅由一个[users]配置段组成。配置格局如下
<用户名> = <口令>
[users]admin = adminthinker = 123456
这里咱们创立2个用户admin、thinker.
- 批改配置文件
vi authz
# 增加用户组g_admin,这个组里蕴含admin这个2个用户 [groups]g_admin = admin,thinker# 版本仓库根目录下用户组`g_admin`的权限设置,会主动递归[admintools:/]@g_admin = rw
配置实现之后就能够启动svn服务
svnserve -d -r /home/svn
查看是否启动
ps -aux | grep svn
如果须要重启,先敞开过程再重启即可
kill -9 [svn的pid]svnserve -d -r /home/svn
window装置tortoisesvn
- 官网
官网留神下载页面下方有语言包,须要汉化间接下载
请参考菜鸟教程-TortoiseSVN 应用教程
svn仓库目录标准
svn://proj/ | +-trunk +-branches +-tags
所有的开 发都是基于trunk进行开发,当一个版本/release开发告一段落(开发、测试、文档、制作安装程序、打包等)完结后,代码处于解冻状态(通过hook来进行治理)。此时应该基于以后解冻的代码库,打tag。
当下一个版本/阶段的开发工作开始,持续在trunk 进行开发。此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急切的性能要求,而正在开发的版本(Developing Version)无奈满足工夫要求,这时候就须要在上一个版本上进行批改了。应该基于发行版对应的tag,做相应的分支(branch)进行开发。
分支是创立在svn服务器的repository上,而merge是合并在开发者本地
svn上每个提交版本,都对应一组操作,你可能在本次提交中批改、新增、删除了某些文件,这些操作和这个版本对应,当进行Merge的时候,是将这些操作利用到本地Working copy中,这就是“合并”的实质:将某个版本(或者某个版本范畴)的操作利用到本地的working copy!了解这点很重要!(Merge的type为“Merge a range of revisions”时的原理)
上面还有一个type为“Merge two different trees”的“合并操作”,实质和下面的相似,这边波及From和To两个URL,这边的意思是比拟以To为基准,从From到To须要通过哪些操作,将这些操作利用到本地的Working copy,比方From外面有个文件a.txt,而To外面没有这个这个文件,那么这边就会有个操作:"delete a.txt",即便不能删除本地的a.txt,然而你如果执意要merge,那么这个删除的操作,必定会利用到本地的Working copy。如果to外面有个b.txt文件,From外面没有,那么From要到To的话,这边就有一个“add b.txt”的操作,更新的话,相似。
查看以后分支
svn log -v -r 1:HEAD --limit 1 --stop-on-copy
常见问题
- 每次commit前先执行update,跟git push前先 git pull差不多
- 遇到权限有余,可能是没有敞开selinux