我正在移动SVN提供者,在这样做的过程中,我所有的repos都像https://www.provider1.com/myrepo1一样开始,所以我在那个repo上做了svn转储,在repo中我的路径开始于trunk/src、trunk/lib等。然而,我的新提供者只给我一个URL,让我将我的项目转储到这些地址中。因此,我需要重命名转储中的所有目录,以便为每个路径添加一个新的父目录,使其看起来像myrepo1/trunk/src、myrepo1/trunk/lib等。我意识到我可以在每个URL中创建一个新目录,并将文件夹移动到其中。但这并不能改变它的历史。那么有没有办法使用svndumpfilter将这个父级直接添加到转储文件中呢?如果没有,我该怎么办?
发布于 2012-08-02 01:55:25
以下是我为使其正常工作所做的工作。我毕竟没有使用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发布于 2012-08-02 10:26:11
或者,您可以使用基于SVNKit的svnkitfilter
$ svnkitfilter OLD_ROOT_URL NEW_URL --prefix myrepo1https://stackoverflow.com/questions/11746377
复制相似问题