SVN 仓库目录管理

一个SVN目录仓库用的时间长了之后,就会发现有的目录可以单独列出来开个单个的仓库了,这时候希望把它们拿出来,并保留改动日志。这个时候就可以用`svndumpfilter`命令来处理这个问题。

第一步,把整个svn库dump出来

sudo svnadmin dump repo1 > repo1_backup.svn

第二步,从dump中提取需要的目录,另外独立成库

sudo svndumpfilter include folder1 folder2 folder3 < repo1_backup.svn > repo1_goup1_backup.svn

第三步,从dump中删除不需要的目录

sudo svndumpfilter exclude folder1 folder2 folder3 < repo1_backup.svn > repo1_backup_filter.svn

经过上面三步处理后,则repo1库分为2个部分:repo1_group1_backup.svn中包含的是原repo1库中的 folder1, folder2, folder3 目录内容;而repo1_backup_filter.svn则是repo1中不包含folder1, folder2, folder3三个目录的内容。接下来要做的就是分别还原这两个dump仓库即可。

还原 repo1_group1_backup.svn

复制代码
# create svn repo first
1) svnadmin create repo1_group1
2) sudo chown -R daemon ./repo1_group1
3) sudo chmod -R 777 ./repo1_group1

# restore svn repo
sudo svnadmin load repo1_group1 < repo1_group1_backup.svn

# restore svn repo into a sub folder
sudo svnadmin load --parent-dir trunk/repo_v1 repo1_group1 < repo1_group1_backup.svn
复制代码

还原 repo1_backup_filter.svn

复制代码
# create svn repo first
1) svnadmin create repo1_new
2) sudo chown -R daemon ./repo1_new
3) sudo chmod -R 777 ./repo1_new

# restore svn repo
svnadmin load repo1_new < repo1_backup_filter.svn
复制代码

到此,svn仓库就分开了! 对于客户端来说,`Relocate`下svn的新地址就可以了。值得注意的是,用这种方式来管理svn目录时,被管理的目录不能有重命名和移动!否则svndumpfilter会报错而失败!

posted @   opencoder  阅读(220)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示