Search code examples
gitvimvim-fugitive

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


I'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?


Solution

  • 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%