开发者

GCommit doesn't work with fugitive.vim under windows xp?

I开发者_Python百科've just discovered fugitive.vim, which is pretty cool. However, I've run into a problem (this is using windows xp, msys git 1.7, fugitive.vim 1.1, and gvim 7.2). Adding files to the index and checking the status works just fine, but when I do a :GCommit, a command prompt flashes for a second and nothing happens. No way to type a commit message and nothing is committed. Is this a bug? Am I doing something wrong?


It looks like issue 428 of msysgit.
(From issue 467)

Reported by michaelrgeddes, Apr 07, 2010

What steps will reproduce the problem?
From cmd shell

set GIT_EDITOR=false
set ERRORLEVEL=
git commit
if errorlevel 1 echo Has an error %ERRORLEVEL%

Expect to see "Has an error 1" but don't.

git version 1.7.0.2.msysgit.0 running on Vista.

Important since it causes :Gcommit failure in 'fugitive' vim integration.


Solution: patch the cmd/git.cmd script of your current msysgit installation.

cmd/git.cmd | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/cmd/git.cmd b/cmd/git.cmd
index 048f615..8cd4397 100644
--- a/cmd/git.cmd
+++ b/cmd/git.cmd
@@ -19,13 +19,15 @@
 @rem Set the console codepage to match the GUI codepage.
 @chcp %cp_ansi% > nul
 @git.exe %*
+@set ErrorLevel=%ErrorLevel%
 @rem Restore the original console codepage.
 @chcp %cp_oem% > nul
 @goto quit 

 :gui
 @if "%2"=="citool" @goto default
-@start wish.exe "%git_install_root%\libexec\git-core\git-gui" -- %2 %3 %4 %5 %6 %7 %8 %9
+@for /f "tokens=1-1*" %%a in ("%*") do @set args=%%b
+@start "git-gui" wish.exe "%git_install_root%\libexec\git-core\git-gui" -- %args%

 :quit
-@%COMSPEC% /c exit /b %ErrorLevel%
+@"%COMSPEC%" /c exit /b %ErrorLevel%


Here is an possible situation that can cause the problem, which I experienced. I list it here in case it can help any one else that met with the same issue.

It happened that after I installed git (downloaed from http://git-scm.com/), I didn't set the git global config user.email. After I setup that via command line, Gcommit works. So if some one met with the same issue, please make sure that you can commit from command line, and then try Gcommit.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜