【问题标题】:git svn fetch fatal: write error: Invalid argumentgit svn fetch fatal:写入错误:参数无效
【发布时间】:2009-12-14 08:17:52
【问题描述】:

当我尝试克隆远程 svn 存储库时发生了奇怪的情况。

当我输入时:
git svn 获取

Git 将获取远程存储库的前 20 个修订版,然后在 20 个修订版之后的某个时间点它失败并仅提示以下错误消息。

致命:写入错误:参数无效

然后就坐在那里什么都不做。重复相同的 git init 然后再次重新获取,结果与报告致命错误的位置完全相同。

知道发生这种情况的原因是什么吗?我目前正在运行以下版本:

TortoiseGit 1.2.1.0
git 版本 1.6.4.msysgit.0

【问题讨论】:

  • 你下载的是Git还是msysgit源码?

标签: git git-svn


【解决方案1】:

与 2010 年 9 月 29 日的最新版本 Msysgit v1.7.2.3 有相同的问题,并想在这里分享我的发现(谷歌出现了几个案例,但没有解决方案)。

尝试在 repo 上执行“git svn rebase”(过去曾多次这样做)在一定数量的提交后始终失败,并出现“致命:写入错误:无效参数”。然后同步将重新开始。

我相信这是 Msysgit 中与大型(ish)二进制文件和可用内存相关的错误(在具有 4GB RAM 和大量可用 HD 空间的 Win XP SP3 系统上)。远程系统是 CodePlex (https://dotnetnuke.svn.codeplex.com/svn) 上的 DotNetNuke SVN 存储库。

最初它被一个 330KB 的“CHM”文件阻塞(~212th commit, r52261)。即使在禁用 Avast AV、Google 桌面等并验证没有其他进程锁定 repo 文件夹之后,它也始终如一地这样做。重新启动后(但打开 Outlook、Dreamweaver 等),它在 ~15.3MB 的 DLL(~416 次提交,相同的修订版)上一直反复失败。

最后,在再次重新启动后,禁用 Avast、Carbonite 和 Google Desktop 并且不运行其他程序,同步首次运行。

这似乎坚定地表明了我的结论,即这是一个可用内存问题,可能与修订版中存在较大的二进制文件和大量提交有关。请注意,我还尝试了“git fsck”、“git svn reset xx”和调整“packSizeLimit”/“usedeltabaseoffset”配置变量,但没有成功。

乍得 - 可能是您遇到了同样的问题,而帮助的是重新启动,而不是升级。

【讨论】:

  • 我遇到了与 37 MB 文件相同的问题。我会尝试释放可用内存,看看是否有帮助。
  • 它没有帮助。我终于切换到 Linux 系统,并且能够毫无问题地克隆我的 Subversion 存储库(7,000 转,900 MB)。 Windows 上的 Git 真的很烂。
  • 我杀死了 Tortoise Git Cache 进程但没有成功。然后我重新启动了系统并使用了有效的命令行。
【解决方案2】:

当我尝试获取大型远程仓库时,我遇到了类似的问题。 我从一开始就尝试了几次,并且一直在大约相同的修订版〜400(或者可能完全相同 - 我没有太注意)中得到那个错误。 谷歌搜索没有给出答案。 比我拿起我的萨满鼓,并试图杀死 TSVNCache.exe 和 TGitCache.exe 进程。 之后,我没有看到该错误消息。由于互联网中断,我多次恢复提取过程 - 一切正常(总修订数约为 3000),看起来问题已经消失了。

我的猜测是其中一个进程锁定了一些文件,它也被 git 使用。

注意:如果您终止该进程并启动 Explorer,它们将再次启动。

【讨论】:

    【解决方案3】:

    我遇到此错误时使用的原始版本是:TortoiseGit-1.0.2.0-32bit.msi

    自从从他们的 Git 存储库中检查了 GIT 源代码和 msysGit 源代码后,我找不到此错误消息的任何位置。

    然后我更新到以下 TortoiseGit 版本: TortoiseGit-1.2.1.0-32bit.msi

    然后我在远程存储库上运行了完全相同的 git 命令并且它工作了。因此,如果将来有人遇到问题,请参考以前使用 GIT 和 windows 的经验,我会总结以下过程。

    1) 检查更新,调试前更新到最新版本
    2) 尝试在旧版本中调试无济于事,问题可能在新版本中得到修复。

    链接到我之前在这件事上的经历: Link

    【讨论】:

      【解决方案4】:

      杀死 TGitCache 对我有用。我讨厌说 TortoiseGit 真的不是 TortoiseSVN 所在的地方……太糟糕了。

      【讨论】:

        【解决方案5】:

        如果排除明显的原因(没有剩余磁盘空间!),它可能与远程 SVN 存储库的布局问题有关(分支不在分支子目录中,标签不在标签中,...) . 有关此类 SVN 存储库的示例,请参阅 Using git-svn with non-standard repository layouts

        其他情况自找麻烦:SVN repo which has changed its layout since the last import

        另见mmap issues in Windows

        【讨论】:

        • 嗨 Vonc,我希望这将是解决问题的方法。我离开并了解了 Refs/remotes/ 以及远程存储库在 GIT 中发生的事情。不过,问题是,即使尝试建议的方法,GIT svn 仍然报告相同的错误。
        • 目前正在下载GIT源码,寻找这个问题的根源。
        • 下载并检查了我正在运行的 GIT 版本。甚至没有成功尝试追捕并找到错误消息的来源。
        【解决方案6】:

        我遇到了同样的问题,并且在我的.git 中有一些奇怪的文件:

        $ ls .git
        1N4s5Mx6eD
        3gRNi8l7yb
        config
        ...
        

        删除这些(1N4s5Mx6eD3gRNi8l7yb、...)后,我可以继续使用git svn fetch

        我认为是网络问题,因为git svn在一个大文件后失败,网络传输错误的可能性更大。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-04
          • 1970-01-01
          • 2014-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多