0%

svn

安装

svn-server配置

  1. 创建
    svnadmin create /svn-server
    目录结构为:
    1cfb100ccd79a6a2345bd6992ea1aec8.png

  2. 配置

conf目录,具体见文档

  • passwd文件,设置用户名和密码
  • authz文件,设置用户组和权限
  • svnserve.conf文件,设置校验规则,需要打开一下选项:
1
2
3
4
5
anon-access = true
auth-access = write
password-db = passwd
authz-db = authz

启动

1
2
svnserve --help
svnserve -d -r /svn-server

备份

  1. svnadmin dump
    1. 优点
      官方推荐可全量或增量备份,并提供了版本恢复机制;
      增量备份与恢复的前提是版本库已存在;

    2. 缺点
      版本比较大时,使用全量比较慢,此时需要与增量结合使用;

1
2
svnadmin dump test > test.bak    #备份并导入到文件
# --incremental 是增量备份,即即每次都只导出自上一个版本以来的修改即该版本的修改。这样的好处是第一:可以把一个大的文 件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分
  1. svn hotcopy
    1. 全量拷贝,备份与恢复较快
    2. 比较消耗硬盘
  2. svnsync
    1. 其实是两个镜像库,需要1.4+版本
    2. 两个库

恢复

其本质是将备份作为新的提交,并生成新的版本;所以在备份与恢复时尽量让版本一致增长;

svnadmin load

1
2
3
4
5
svnadmin dump testA -r 6 > test-r6.bak   #备份机器A上的testA库的制定版本到备份文件
svnadmin load testB < test-r6.bak #加载备份文件到testB库
#若在checkout testB库之后执行,则update会报错,需要重新checkout
#对于全备份没有问题,即只针对使用 -r 参数有效

解决方案

出现svn: E220001: Item is not readable;

根据是否需要匿名访问,分为以下两种方式解决:

  1. 允许匿名访问
    1. svnserve.conf文件,anon-access=read
    2. authz文件,[/]下添加 *=r
  2. 禁止匿名访问
    1. svnserver.conf文件,anon-access=none
    2. authz文件中[/]下只需配置相关的用户即可