【问题标题】:Git SVN Is Unable to Fetch from SVN RepositoryGit SVN 无法从 SVN 存储库中获取
【发布时间】:2011-02-25 03:08:05
【问题描述】:

我想同时使用 SVN 和 Git。我有一个 svn 存储库,我正在尝试获取工作目录,但遇到如下错误。

svn,版本 1.6.6 (r40053)

git 版本 1.7.3.1.msysgit.0

svn仓库路径是file:///d:/tmp/test-svn/repos

这些是我做的步骤:

D:\tmp\test-svn>mkdir my-project

D:\tmp\test-svn>cd my-project

D:\tmp\test-svn\my-project>git svn init file:///d:/tmp/test-svn/repos

Initialized empty Git repository in D:/tmp/test-svn/my-project/.git/

D:\tmp\test-svn\my-project>git svn fetch

Couldn't open a repository: Unable to open an ra_local session to URL: Unable to
 open repository 'file:///d:/tmp/test-svn/repos/my-project/trunk': Expected FS f
ormat '2'; found format '4' at C:\Program Files\Git/libexec/git-core/git-svn lin
e 1773

那么问题是什么?如何从 svn 存储库中获取数据到 git 工作目录?

谢谢。

【问题讨论】:

标签: svn git git-svn


【解决方案1】:

我认为这是以下问题:http://code.google.com/p/msysgit/issues/detail?id=298

可能的解决方案是设置 svnserve 并使用svn:// 协议而不是file:///

请参阅此处以在 Windows 上设置 svnserve: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-serversetup-svnserve.html

更新

如果您使用 Windows 操作系统,svnserve 可以作为 TortoiseSVN 的一部分使用(我检查过 TortoiseSVN 版本 1.8.6)

那你就开始吧:

svnserve -d -R --root c:\path\to\svn\repo

并使用以下命令克隆存储库:

git svn clone svn://localhost/path/inside/svn/repo

【讨论】:

  • 这是最好的解决方案:TortoiseSVN 已经自带了必要的命令行工具(默认情况下它们没有安装,您必须在安装程序中选择它们)。然后你只需启动svnserve -d -R --root d:\svnroot 并使用git clone svn://localhost/myproject 克隆存储库。
  • @Maddin 我已经更新了答案。感谢您的有用说明!
【解决方案2】:

我可以建议使用SmartGit 克隆您的存储库。它具有在 java 中实现的 git-svn 功能,比 git-svn 快得多并且优于它。希望它对你有用。

但是,如果您可以访问您的 SVN 存储库服务器,我建议您在其中安装 SubGit。在这种情况下,您将获得一个与 SVN 存储库自动同步的 Git 存储库(并且是并发安全的)。

这两种方法都比 git-svn 有很大的优势,例如:自动标记、忽略、EOL 翻译。 SubGit 还尝试在提交到 SVN 时尽可能保留日期。

【讨论】:

  • 感谢 SmartGit,它运行良好。克隆 SVN 存储库时,MsysGit 总是因 AV 失败,而 SmartGit 可以正常工作。此外,它比 git-svn 更快地克隆整个 repo。
猜你喜欢
  • 2018-07-15
  • 2011-04-14
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多