diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim
new file mode 100644
index 0000000..bfc5b33
--- /dev/null
+++ b/runtime/ftplugin/gitcommit.vim
@@ -0,0 +1,68 @@
+" Vim filetype plugin
+" Language:	git config file
+" Maintainer:	Tim Pope <vimNOSPAM@tpope.info>
+" Last Change:	2008 Jun 04
+
+" Only do this when not done yet for this buffer
+if (exists("b:did_ftplugin"))
+  finish
+endif
+
+runtime! ftplugin/git.vim
+let b:did_ftplugin = 1
+
+if &textwidth == 0
+  " make sure that log messages play nice with git-log on standard terminals
+  setlocal textwidth=72
+  if !exists("b:undo_ftplugin")
+      let b:undo_ftplugin = ""
+  endif
+  let b:undo_ftplugin = b:undo_ftplugin . "|setl tw<"
+endif
+
+if exists("g:no_gitcommit_commands") || v:version < 700
+  finish
+endif
+
+if !exists("b:git_dir")
+    let b:git_dir = expand("%:p:h")
+endif
+
+" Automatically diffing can be done with:
+"   autocmd FileType gitcommit DiffGitCached | wincmd p
+command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+
+function! s:diffcomplete(A,L,P)
+    let args = ""
+    if a:P <= match(a:L." -- "," -- ")+3
+        let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n"
+    end
+    if exists("b:git_dir") && a:A !~ '^-'
+        let tree = fnamemodify(b:git_dir,':h')
+        if strpart(getcwd(),0,strlen(tree)) == tree
+            let args = args."\n".system("git diff --cached --name-only")
+        endif
+    endif
+    return args
+endfunction
+
+function! s:gitdiffcached(bang,gitdir,...)
+    let tree = fnamemodify(a:gitdir,':h')
+    let name = tempname()
+    let git = "git"
+    if strpart(getcwd(),0,strlen(tree)) != tree
+        let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"')
+    endif
+    if a:0
+        let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'"))
+    else
+        let extra = "-p --stat=".&columns
+    endif
+    call system(git." diff --cached --no-color ".extra." > ".(exists("*shellescape") ? shellescape(name) : name))
+    exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name)
+    wincmd P
+    let b:git_dir = a:gitdir
+    command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>)
+    nnoremap <silent> q :q<CR>
+    setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git
+endfunction
