将多个文件夹从一个 Subversion 存储库移动到另一个 Subversion 存储库

将多个文件夹从一个 Subversion 存储库移动到另一个 Subversion 存储库

将多个文件夹从一个 Subversion 存储库移动到另一个 Subversion 存储库

我有一台 centOS 6.4 服务器并安装了 subversion 1.4.2。我的服务器中有两个颠覆存储库。

过去两个 4 个月我一直在使用“repoOLD”,现在我创建了另一个名为“repoNEW”的存储库

'repoOLD' 包含 100 个文件夹(项目)。

“repoNEW”刚刚创建,我需要将一些项目从“repoOLD”复制到“repoNEW”

现在的问题是如何将多个文件夹(项目)从我的“repoOLD”转移到“repoNEW”

我尝试过谷歌搜索,但无法找到将多个文件夹从一个 subversion 存储库移动到另一个存储库的教程

答案1

其他人可能会发布一个更好的直接使用 Subversion 的答案,但我将建议一种涉及转换到git然后再返回到 Subversion 的方法,因为gitfilter-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您不再需要的所有目录在哪里。您必须列出所有要删除的内容。

使用lsgit 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

相关内容