乐趣区

关于svn:svn学习记录

技巧整顿

  • 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 = none
auth-access = write
password-db = passwd
authz-db = authz
realm = 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,全局惟一标示)。
  1. 配置用户名和明码
vi passwd

用户名口令文件由 svnserve.conf 的配置项 password-db 指定,默认为 conf 目录中的 passwd。该文件仅由一个 [users] 配置段组成。配置格局如下

< 用户名 > = < 口令 >
[users]
admin = admin
thinker = 123456

这里咱们创立 2 个用户 admin、thinker.

  1. 批改配置文件
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
退出移动版