diff --git a/autoload/magit/git.vim b/autoload/magit/git.vim index 6e5f12f7a5a12c8d4648c77d5c6600e5656c6c03..222c9b8a1d55af4f099f342ea0febc4f4788af0d 100644 --- a/autoload/magit/git.vim +++ b/autoload/magit/git.vim @@ -1,5 +1,21 @@ let s:git_cmd="GIT_CONFIG=/dev/null GIT_CONFIG_NOSYSTEM=1 XDG_CONFIG_HOME=/ git" +function! magit#git#get_version() + if ( !exists("s:git_version") ) + let s:git_version = matchlist(system(s:git_cmd . " --version"), + \ 'git version \(\d\+\)\.\(\d\+\)\.\(\d\+\)\.\(\d\+\)\.\(g\x\+\)')[1:5] + endif + return s:git_version +endfunction + +function! magit#git#is_version_sup_equal(major, minor, rev) + let git_ver = magit#git#get_version() + return ( ( a:major > git_ver[0] ) || + \ (a:major >= git_ver[0] && a:minor > git_ver[1] ) || + \ (a:major >= git_ver[0] && a:minor >= git_ver[1] && a:rev >= git_ver[2] ) + \ ) +endfunction + " magit#git#get_status: this function returns the git status output formated " into a List of Dict as " [ {staged', 'unstaged', 'filename'}, ... ]