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