git - 我如何克隆本地svn仓库?

44

我完全找不到任何关于如何指定现有svn库位置的解释。

换句话说,

在哪里使用作为URL?

git svn clone URL

SVN存储库何时为本地?

2个回答

65

你应该能够像这样成功:

git svn clone file:///e/svn_repo_on_E_drive

与svn checkout命令类似:

svn co file:///e/svn_repo_on_E_drive

file://表示当前驱动器上执行CMD提示符的文件夹,file:///d/some_folder表示D:\some_folder

注意:在Windows上,文件链接中会有额外的/和去掉的冒号:。例如 file://e:/svn_repo_on_E_drive 将变成 file:///e/svn_repo_on_E_drive

git svn clone 也可以用于远程svn仓库

# for example
git svn clone https://your.hostname/path/here/svn/
  • 注意:git svn clone 获取所有提交记录,与svn checkout只获取最新文件集不同,因此如果svn仓库有很多提交和/或文件,则此shell命令可能需要很长时间。

15
在这种方法中我遇到了问题,直到我从文件URL的驱动器中删除了冒号(:)。通常在Windows中,您会看到此类文件URL:file:///e:/svn_repo_on_E_drive,但对于Git,您需要从驱动器中删除“:”,使其变成file:///e/svn_repo_on_E_drive。 - kurast
3
对我来说,任何组合的///和其他东西都不起作用: 无法创建会话:无法连接到URL为'file://d/temp/xxxx'的存储库:本地URL 'file://d/temp/xxxx'包含不支持的主机名'/', 位于mingw64/share/perl5/site_perl/Git/SVN.pm第144行。 - flohack
3
使用3个斜线,我得到了稍微不同的结果: $ git svn clone file:///d/temp/xxxx/ 在 D:/yyyy.lt/git/xxxx/.git/ 中初始化了一个空的 Git 仓库。 无法创建会话:无法连接到 URL 为 'file:///d/temp/xxxx' 的代码库:在 /mingw64/share/perl5/site_perl/Git/SVN.pm 的第 144 行无法打开代码库 'file:///d/temp/xxxx'。 - flohack
1
你的回复拯救了我即将放弃的旧代码库。在其他地方都找不到: file://e:/svn_repo_on_E_drive → file:///e/svn_repo_on_E_drive - Azghanvi
无法使其工作。出现了这个错误:在 C:/Program Files/Git/mingw64/share/perl5/Git/SVN.pm 的第 310 行,无法打开存储库 'file:///d/projects/xxx'。 我正在使用 git 版本 version 2.34.0.windows.1 - bitmountain
显示剩余6条评论

9

对于本地仓库,您可以使用与正常SVN客户端检出相同的file:// URL。

如果您尝试复制整个历史记录,并且使用git svn clone --stdlayout,只需使用您将用于使用svn检出主干的URL,减去末尾的/trunk部分。


2
所以 file:///X:/path/to/repos 应该可以工作?奇怪的是,它失败并显示“无法打开存储库:无法打开指向 URL 的 ra_local 会话:无法打开存储库”。 - Bulwersator
3
file:// URL 对我来说可行。关于驱动器说明符部分,我不使用 Windows,所以不清楚。 - qqx
2
从你上一条评论中我猜测你正在使用Windows。 尝试移除第三个“/”。 可能无法正常工作是因为存在一个错误:https://code.google.com/p/tortoisegit/issues/detail?id=1402 - Francesco Frassinelli
10
需要将驱动器字母中的冒号(:)删除。因此,您需要使用file:///X/path/to/repos而不是file:///X:/path/to/repos。 - Crayon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接