将 svn 存储库转换为 hg-身份验证失败

将 svn 存储库转换为 hg-身份验证失败

我正在尝试使用以下命令将现有的 svn 存储库转换为 mercurial 存储库

hg 转换 <存储库> <文件夹>

我的问题是 svn 存储库的身份验证是通过 p12 证书完成的。我有点搞不懂如何为 hg 客户端配置证书,以便我可以提取 svn 存储库并进行转换。目前,如果我尝试运行上述命令,我会得到

初始化目标 hg-client 存储库中止:错误:_ssl.c:480:错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败

换句话说,它找不到所需的证书。问题是,我该如何配置我的 hg 客户端,以便它可以使用我的证书?

我在 Linux 上使用命令行 hg 客户端。

编辑:澄清一下,不是服务器拥有证书,也不是客户端试图验证服务器。而是客户端拥有证书,服务器需要证书来验证客户端。

答案1

我不确定如何说服 Mercurial 提供证书,但你可以用它svnsync来制作 svn repo 的本地副本,然后hg convert针对它运行。无论如何,它应该会使转换速度明显加快。

答案2

有一种解决方法可能会有所帮助,如果你先查看 svn repo,然后永久接受证书,然后 hg 应该使用它并转换 repo。

因此,首先使用 subversion 检查所需的 repo:

svn co https://yoursvn.com

Subversion 随后会询问你有关证书的信息,请输入永远接受它。

(R)eject, accept (t)emporarily or accept (p)ermanently? p

现在我们并不真正关心您刚刚签出的副本,我们只是想为证书创建一个例外。如果您现在运行原始的 hg convert 命令,希望它能够使用我们刚刚永久允许的证书:

hg convert <repository> <folder>

请告诉我这是否可行,因为我即将与客户一起切换到 mercurial,这可能是一个问题。请参阅此链接有关上述解决方法的更多信息。

答案3

另一个选择(是的,我知道这个问题已经存在好几个月了)是从 svn checkout 进行转换。只需确保执行完整的 checkout(通常在 /trunk 的上一级)并hg convert在此基础上运行即可。

相关内容