3

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

4

2 回答 2

1

这是我为使其正常工作所做的工作。毕竟我没有使用 svndumpfilter。相反,我创建了一个新的存储库,svnadmin然后在新创建的 svn 存储库中创建了一个父目录。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
于 2012-08-01T17:55:24.597 回答
1

或者,您可以使用基于SVNKit的svnkitfilter

$ svnkitfilter OLD_ROOT_URL NEW_URL --prefix myrepo1
于 2012-08-02T02:26:11.367 回答