将多个文件夹从一个 Subversion 存储库移动到另一个 Subversion 存储库
我有一台 centOS 6.4 服务器并安装了 subversion 1.4.2。我的服务器中有两个颠覆存储库。
过去两个 4 个月我一直在使用“repoOLD”,现在我创建了另一个名为“repoNEW”的存储库
'repoOLD' 包含 100 个文件夹(项目)。
“repoNEW”刚刚创建,我需要将一些项目从“repoOLD”复制到“repoNEW”
现在的问题是如何将多个文件夹(项目)从我的“repoOLD”转移到“repoNEW”
我尝试过谷歌搜索,但无法找到将多个文件夹从一个 subversion 存储库移动到另一个存储库的教程
答案1
其他人可能会发布一个更好的直接使用 Subversion 的答案,但我将建议一种涉及转换到git
然后再返回到 Subversion 的方法,因为git
的filter-branch
功能擅长于此。
将旧的 svn 仓库克隆到本地 git 仓库
git svn clone <url-for-repoOLD>
我假设本地git
克隆现在存储在目录中repoOLD
在git克隆中,过滤掉你不想要的一切
现在删除新存储库中不再需要的所有内容。
cd repoOLD
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch dirA dirB dirC dirD' \
--prune-empty --tag-name-filter cat -- --all
...dirA dirB dirC dirD
您不再需要的所有目录在哪里。您必须列出所有要删除的内容。
使用ls
和git log
等检查此存储库,以确保它包含您想要的内容。
将新的 svn 存储库克隆到本地 git 存储库
cd .. # (get out of repoOLD if you are still in there)
git svn clone <url-for-repoNEW>
我假设本地git
克隆现在存储在目录中repoNEW
我还将假设 repoNEW 此时完全是空的,因为您尚未向其中提交任何内容或从 repoOLD 导入任何内容。
git
从repoOLD 克隆导入所有内容
cd repoNEW
git remote add repoOLD ../repoOLD
git fetch repoOLD
git merge repoOLD/master
现在将这些更改推送回 repoNEW svn 服务器
git svn dcommit