我可以使用svn转储并重新显示目录吗?

时间:2012-07-31 18:09:16

标签: svn dump svnadmin

我正在移动SVN提供商,并且这样做我的所有repos都像https://www.provider1.com/myrepo1一样开始,所以我在该repo上完成了一个svn转储,并且在repo中我的路径开始trunk/src,{ {1}}等等。但是,我的新提供商只为我提供了一个URL,可以将我的项目转储到这些URL中。所以我需要重命名转储中的所有目录,为每个路径添加一个新父目录,使其看起来像trunk/libmyrepo1/trunk/src等。我意识到我可以在每个URL中创建一个新目录repo,并将文件夹移入其中。但这并没有改变它的历史。那么有没有办法使用svndumpfilter直接将此父级添加到转储文件中?如果不是我该怎么办?

2 个答案:

答案 0 :(得分:1)

这是我为了让它发挥作用所做的。毕竟我没有使用svndumpfilter。相反,我使用svnadmin创建了一个新的存储库,然后在新创建的svn repo中创建了一个父目录。然后使用svnadmin load加载转储,告诉它将该转储放在新的父目录下。

首先下拉项目并创建该项目的转储:

svnadmin create project1
emacs repo/hooks/pre-revprop-change
chmod 755 project1/hooks/pre-revprop-change
svnsync init file://$(pwd)/project1 https://somehost.com/svn/project1
svnsync sync file://$(pwd)/project1
svnadmin dump project1 > some.dump

接下来创建一个新的svn项目,我们将把转储加载到新的父目录中:

svnadmin create someDirectory
svn mkdir -m "Add root directory to project" file://$(pwd)/someDirectory/THE_PARENT_NAME
cat some.dump | svnadmin load --parent-dir THE_PARENT_NAME someDirectory

答案 1 :(得分:1)

或者,您可以根据svnkitfilter使用SVNKit

$ svnkitfilter OLD_ROOT_URL NEW_URL --prefix myrepo1