背景:
已存在 svn /aa/bb/cc 仓库,但公司研发现在需求是把 /aa/bb 变为仓库,cc 则为 /aa/bb 仓库内的一个目录,且需要保留内容和 log。
操作步骤
1. 导出原仓库数据
bash
# 导出 cc 仓库全部历史
svnadmin dump /svndir/aa/bb/cc > cc_repository.dump
# 移动原仓库
mv /svndir/aa/bb/cc /tmp/cc
2. 创建仓库并导入数据
bash
# 创建新仓库 bb
svnadmin create /svndir/aa/bb
# 关键:手动创建父目录,否则导入会报错 E160013
svn mkdir file:///svndir/aa/bb -m "为导入 cc 数据预建目录"
# 将数据导入 bb 仓库的 cc 目录下(--parent-dir)
# 否则会导入到 / 目录
svnadmin load /svndir/aa/bb --parent-dir cc < cc_repository.dump
3. 导入权限
bash
cp -r /tmp/cc/conf/* /svndir/aa/bb/conf/
检查对应目录权限,然后下载检查 log 等即可。
其他
-
同时创建多目录:
svn mkdir file:///svndir/aa/bb/cc1 file:///svndir/aa/bb/cc2 -m "预建目录"
-
实现父目录可读,子目录禁用:
vim authz
如下:
[/xx]
user = rw # 允许访问父目录
[/xx/aa]
user = # 留空表示禁止访问子目录 aa(会覆盖父目录权限) -
下载仓库后 log 查看异常
能成功下载仓库,但是查看 log 要不停输入密码,解决方法(清缓存):
右键 -> TortoiseSVN -> Settings -> Saved Data -> Authentication data -> 点击 Clear