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 @ 2023-09-05 18:49  opencoder  阅读(183)  评论(0编辑  收藏  举报