WHERE SVN2GIT "WARN: Branch ... in repository ... doesn't exist at revision ... -- did you resume from the wrong revision?" 无法继续
KDE SVN2GIT "WARN: Branch ... in repository ... doesn't exist at revision ... -- did you resume from the wrong revision?" Can't continue
我正在尝试将内部修订超过 24k 的 11GB SVN 存储库迁移到单个 GIT 存储库。
我使用 svnrdump
命令对 SVN 进行了单个文件转储,并将其加载到我的本地 SVN 服务器,放置在我的 MacBook 机器上。
我从 https://github.com/svn-all-fast-export/svn2git 存储库下载了 svn2git。
由于 SVN 和 GIT 处理标签的方式不同,我使用了 svn2git 示例目录中的 merged-branches-tags.rules,它看起来像这样(我已经删除了注释):
创建存储库 myproject
结束存储库
match /trunk/
repository myproject
branch master
end match
match /(branches|tags)/([^/]+)/
repository myproject
branch
end match
然后我使用了文档中描述的 docker 图像解决方案(在我的控制台中它是一行。我将它拆分以阐明我在做什么):
docker run --rm -it \
-v /Users/me/work/SVN/dest:/workdir \
-v /Users/me/work/svnServer/repositories/my_svn_repo:/tmp/svn \
-v /Users/me/work/SVN/svn2git/samples:/tmp/conf \
svn2git /usr/local/svn2git/svn-all-fast-export \
--rules /tmp/conf/merged-branches-tags.rules \
--add-metadata --svn-branches --debug-rules --svn-ignore --empty-dirs \
/tmp/svn/
在第一次尝试期间,我在修订版 12600 和 126001 之间遇到错误:
Exporting revision 12601 /tags/7.0M0p0000 was copied from /tags rev 12600
rev 12601 /tags/7.0M0p0000/ matched rule: "/tmp/conf/merged-branches-tags.rules:28 /(branches|tags)/([^/]+++++
)/" exporting.
.WARN: SVN reports a "copy from" @ 12601 from /tags @ 12600 but no matching rules found! Ignoring copy, treating as a modification
WARN: Transaction: "7.0M0p0000" is not a known branch in repository "myproject"
Going to create it automatically
add/change dir ( /tags/7.0M0p0000 -> "7.0M0p0000" "" )
+++++
WARN: Branch "7.0M0p0000" in repository "myproject" doesn't exist at revision 12601 -- did you resume from the wrong revision?
Failed to write to process: Process crashed for repository myproject
6223345 modifications from SVN /tags/7.0M0p0000/ to myproject/7.0M0p0000%
我已经检查过了,在 rev 12601 中有一个名为“7.0M0p0000”的新标签,我将把它作为一个分支导入,但它不在 rev 12600 的 repo 中。
您有什么想法可以解决这个问题并继续我的迁移吗?
非常感谢任何帮助。
经过进一步调查,发现上述“7.0M0p0000”标签是在版本 12601 中创建的,作为版本 12600 中所有标签的副本。
我在使用以下命令创建的转储文件中找到了它:
svnrdump dump -r 12600:12601 --incremental http://xxx.xxx.xxx.xxx/svn/my_repo > my_repo.dump
有一个条目:
Revision-number: 12601
...
Node-path: tags/7.0M0p0000
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 12600
Node-copyfrom-path: tags
KDE 的 svn2git 似乎无法处理这种情况(这可能是误操作)。
我找到的唯一解决方案是通过向我的 merged-branches-tags.rules 文件添加一个匹配项来完全跳过此标记(匹配表达式的顺序很重要):
match /tags/7.0M0p0000/
min revision 12600
max revision 12606
end match
...
match /(branches|tags)/([^/]+)/
repository myproject
branch
end match
我正在尝试将内部修订超过 24k 的 11GB SVN 存储库迁移到单个 GIT 存储库。
我使用 svnrdump
命令对 SVN 进行了单个文件转储,并将其加载到我的本地 SVN 服务器,放置在我的 MacBook 机器上。
我从 https://github.com/svn-all-fast-export/svn2git 存储库下载了 svn2git。
由于 SVN 和 GIT 处理标签的方式不同,我使用了 svn2git 示例目录中的 merged-branches-tags.rules,它看起来像这样(我已经删除了注释): 创建存储库 myproject 结束存储库
match /trunk/
repository myproject
branch master
end match
match /(branches|tags)/([^/]+)/
repository myproject
branch
end match
然后我使用了文档中描述的 docker 图像解决方案(在我的控制台中它是一行。我将它拆分以阐明我在做什么):
docker run --rm -it \
-v /Users/me/work/SVN/dest:/workdir \
-v /Users/me/work/svnServer/repositories/my_svn_repo:/tmp/svn \
-v /Users/me/work/SVN/svn2git/samples:/tmp/conf \
svn2git /usr/local/svn2git/svn-all-fast-export \
--rules /tmp/conf/merged-branches-tags.rules \
--add-metadata --svn-branches --debug-rules --svn-ignore --empty-dirs \
/tmp/svn/
在第一次尝试期间,我在修订版 12600 和 126001 之间遇到错误:
Exporting revision 12601 /tags/7.0M0p0000 was copied from /tags rev 12600
rev 12601 /tags/7.0M0p0000/ matched rule: "/tmp/conf/merged-branches-tags.rules:28 /(branches|tags)/([^/]+++++
)/" exporting.
.WARN: SVN reports a "copy from" @ 12601 from /tags @ 12600 but no matching rules found! Ignoring copy, treating as a modification
WARN: Transaction: "7.0M0p0000" is not a known branch in repository "myproject"
Going to create it automatically
add/change dir ( /tags/7.0M0p0000 -> "7.0M0p0000" "" )
+++++
WARN: Branch "7.0M0p0000" in repository "myproject" doesn't exist at revision 12601 -- did you resume from the wrong revision?
Failed to write to process: Process crashed for repository myproject
6223345 modifications from SVN /tags/7.0M0p0000/ to myproject/7.0M0p0000%
我已经检查过了,在 rev 12601 中有一个名为“7.0M0p0000”的新标签,我将把它作为一个分支导入,但它不在 rev 12600 的 repo 中。
您有什么想法可以解决这个问题并继续我的迁移吗? 非常感谢任何帮助。
经过进一步调查,发现上述“7.0M0p0000”标签是在版本 12601 中创建的,作为版本 12600 中所有标签的副本。
我在使用以下命令创建的转储文件中找到了它:
svnrdump dump -r 12600:12601 --incremental http://xxx.xxx.xxx.xxx/svn/my_repo > my_repo.dump
有一个条目:
Revision-number: 12601
...
Node-path: tags/7.0M0p0000
Node-kind: dir
Node-action: add
Node-copyfrom-rev: 12600
Node-copyfrom-path: tags
KDE 的 svn2git 似乎无法处理这种情况(这可能是误操作)。
我找到的唯一解决方案是通过向我的 merged-branches-tags.rules 文件添加一个匹配项来完全跳过此标记(匹配表达式的顺序很重要):
match /tags/7.0M0p0000/
min revision 12600
max revision 12606
end match
...
match /(branches|tags)/([^/]+)/
repository myproject
branch
end match