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会报错而失败!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了