2

我正在尝试将 SVN 存储库转换为 Mercurial,但遇到了一些麻烦。这些是我采取的步骤:(我在 Windows 上)

在扩展程序中打开“转换”

打开一个命令窗口,然后输入:

hg convert http://myversioncontrorepositoryhere

它说它正在初始化目标文件夹,然后询问:

Enter username for Administration at http://myversioncontrorepositoryhere:

然后输入我的用户名

 in Administration at http://myversioncontrorepositoryhere:

我认为这是我的密码,但它只是循环回

Enter username for Administration at http://myversioncontrorepositoryhere:

我究竟做错了什么?我很确定我输入了正确的用户名和密码。

4

4 回答 4

7

我不知道可能出了什么问题,但我想建议一个解决方法(这是我个人用于此任务的唯一方法!):首先svnsync svn 项目以制作本地镜像,hg convert然后本地镜像——这就是 O'Sullivan 在他的书中所建议的(这个 URL 有,作为“书中的样本”,正是用于将项目从其他 VCS 导入到 hg 的相关附录——特别强调 svn!),尽管他的建议主要是出于对速度的考虑,我怀疑遵循它也为我节省了身份验证和授权的麻烦,我希望它也能为你做同样的事情!-)

于 2009-11-01T17:12:21.407 回答
3

改用hgsubversion ;它更强大。我在 Windows 上与 Subversion 的 CLI 交互时遇到了很多奇怪的问题(主要是通过使用 CMD 而不是另一个 shell 来解决)。

于 2009-11-01T17:04:09.490 回答
1

通过简单地从本地结帐转换,我很幸运地解决了身份验证问题:

svn co http://myversioncontrorepositoryhere localrepo
hg convert localrepo
于 2012-06-20T12:57:35.390 回答
0

根据我的经验,转换具有大量项目和多年历史的真实 Subversion 存储库需要更多的参与。主要是因为在 Subversion 中,为所有东西拥有一个巨大的 repo 是很好的。相反,建议 Mercurial 存储库更细粒度。

我假设以下 Subversion 存储库布局:

├── project1
│   ├── branches
│   ├── tags
│   └── trunk
│       ├── package1
│       └── package2
└── project2

转换应该变成具有自己历史的独立 Mercurial 存储库package1package2在这个答案中,我对单路径感兴趣,但标签和分支的转换也是可能的

准备

我通常在具有快速连接的远程服务器上进行转换。对于 Debian 系列,需要以下软件包。

apt-get install mercurial subversion python-subversion

然后应该启用转换扩展。

echo -e "[extensions]\nhgext.convert=" >> ~/.hgrc

在 Windows 上,确保您已满足先决条件

执行

请注意,如果您尝试直接从远程颠覆存储库进行转换,可能需要几个小时,因此以下创建项目路径的镜像。然后每次转换都是几秒钟到几分钟的事情。

cd /tmp
svnadmin create svn-mirror

# on Windows you may need to look at comments to accepted answer
echo '#!/bin/sh' > svn-mirror/hooks/pre-revprop-change
chmod +x svn-mirror/hooks/pre-revprop-change

svnsync init file:///tmp/svn-mirror svn://subversion.repo/project1
svnsync sync file:///tmp/svn-mirror

echo 'include project1/trunk/package1' > package1-map
echo 'rename project1/trunk/package1 .' >> package1-map    
hg convert --filemap=package1-map svn-mirror package1

echo 'include project1/trunk/package2' > package2-map
echo 'rename project1/trunk/package2 .' >> package2-map    
hg convert --filemap=package2-map svn-mirror package2

然后在包目录中,您可以使用 mercurial 客户端或像 RhodeCode 这样的 repo 管理器运行hg serve -p 8080和克隆。http://your.host:8080

于 2015-06-22T18:20:16.710 回答