11

I've been using git along with fugitive.vim to manage code when I'm on windows. However, I've run into a problem. According to the documentation, the :GDiff command should a diff window and allow me to stage only parts of a file. However, when I issue the command in a file with changes, I get the following error message: alt text

Is this a problem with windows? vim? fugitive? msysgit? file permissions? Anybody know?

4

4 回答 4

14

我有同样的问题 - 这是我解决它的方法。

默认情况下,Vim 会尝试将交换文件存储在原始文件旁边。Fugitive 创建了一个与任何真实文件路径都不对应的缓冲区,因此 Vim 在尝试创建交换文件时会出错。解决方案是确保 Vim 有一个可以写入的路径。

这是我解决这个问题的方法:

if has("win32") || has("win64")
   set directory=$TMP
else
   set directory=~/tmp
end

这是 GitHub 上的原始问题: https ://github.com/tpope/vim-fugitive/issues/9

编辑:

正如下面所指出的,最好使用以下内容:

set directory+=,~/tmp,$TMP

Vim 应该使用它可以使用的第一条路径。

于 2011-05-01T05:51:13.833 回答
2
于 2011-05-07T08:08:26.887 回答
1

顺便说一句,当我尝试 :gdiff 未保存的文件时遇到同样的错误 - 当我保存它时 (:w) 它可以工作!

于 2011-01-09T13:40:44.803 回答
1

这可能与我的 SO answer 中提到的 msysgit 的 issue 428 有关

尝试cmd/git.cmd按照我在之前的答案中描述的那样修补,看看是否有帮助。

除此之外,还有两个选择:

  • 锁定问题(文件被进程锁定):诸如进程监视器进程资源管理器之类的实用程序可能有助于查看是否是这种情况(以及该交换文件上究竟有什么句柄)
  • 或 Git 问题。一个好技巧是安装 msysgit 的网络安装程序,它将在您的 Windows 上构建最新版本的 Git。然后,您可以尝试查看该更新版本是否仍然存在问题。
    注意:第三个选项,尝试降级 Git,再次排除与该工具的任何链接。
于 2010-05-28T20:51:17.257 回答