This is more reliable and fixes an issue where the syntastic location list of the original file would be focused after `:Gdiff`. Ref: blueyed@c99f0ff#commitcomment-9434351
* Provide :Gpush, :Gfetch, :Gmerge, and Gpull. * Use -L to handle :Glog range. * :Gcommit -v opens message in new tab. * API for custom :Gbrowse handlers. * Invoke :Browse if available to open URL. * Colorize hashes in :Gblame buffer. * Set cursorbind and nobuflisted in :Gblame buffers. * :Gblame in blame buffer toggles buffer.
This implements the changes suggested in tpope/fugitive#415. s:repo_configured_tree is now a global, s:configured_tree() that caches the bidirectional relation between the worktree and the git_dir. extract_git_dir() now uses that relation to check whether the directories it scans are valid worktrees known by the repo at $GIT_DIR.
Taking experimental out of the name, but small tweaks may occur before then next release. For future compatibility, any third party handlers should bail and return an empty string if any of the following are true: * More than 2 arguments are given. * The second argument isn't a dictionary. * The dictionary doesn't contain a "remote" key. Closes #445.