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.
精彩评论