mirror of
https://github.com/tpope/vim-fugitive.git
synced 2025-11-09 12:03:47 -05:00
Compare commits
65 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
21ed533001 | ||
|
|
29153d5ba1 | ||
|
|
8d4b85ed09 | ||
|
|
708595d996 | ||
|
|
dc6719e7b0 | ||
|
|
c48db08e4e | ||
|
|
2ebdeef9e0 | ||
|
|
bc0b78ee84 | ||
|
|
5bcb42164e | ||
|
|
1a6934fc7e | ||
|
|
397fb99921 | ||
|
|
5b1213d0db | ||
|
|
ae52b5a96a | ||
|
|
9f032ed040 | ||
|
|
d428032600 | ||
|
|
c83355d5c5 | ||
|
|
4732bb964a | ||
|
|
3e32a55619 | ||
|
|
a65db6fcf8 | ||
|
|
305337a9c1 | ||
|
|
6a638f2392 | ||
|
|
6bc345f6f1 | ||
|
|
def982ac4d | ||
|
|
5fe99dc5df | ||
|
|
394c925381 | ||
|
|
4074727343 | ||
|
|
cfa7bdc82a | ||
|
|
ddd64fc4c5 | ||
|
|
2bcf755c6e | ||
|
|
295f41bbf4 | ||
|
|
9ec6b55d03 | ||
|
|
3604fab3b7 | ||
|
|
6d011f1ea5 | ||
|
|
726fdf1c94 | ||
|
|
3bf602b13d | ||
|
|
3729c351e1 | ||
|
|
7848779d3b | ||
|
|
b68b6d4329 | ||
|
|
6d4564a05e | ||
|
|
5d37b17e34 | ||
|
|
b48a572475 | ||
|
|
e1ab8fff09 | ||
|
|
d3a2bdbe2c | ||
|
|
42c6fd1440 | ||
|
|
671a85daba | ||
|
|
6d9dd103c0 | ||
|
|
3b1da8b217 | ||
|
|
67efbf66e0 | ||
|
|
eed46c1f24 | ||
|
|
dc5320630d | ||
|
|
13fdeb5fa7 | ||
|
|
3936a74584 | ||
|
|
a2d76c4583 | ||
|
|
fd029d83bf | ||
|
|
0004f585fd | ||
|
|
b24f98fbb1 | ||
|
|
8c84ea6fdb | ||
|
|
1e57d678ba | ||
|
|
f6acae50ea | ||
|
|
0356edf6b8 | ||
|
|
e8c5b604db | ||
|
|
b09c5d2523 | ||
|
|
395d947644 | ||
|
|
0a77016ef5 | ||
|
|
06e34204af |
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@@ -1 +1,2 @@
|
|||||||
github: tpope
|
github: tpope
|
||||||
|
custom: ["https://www.paypal.me/vimpope"]
|
||||||
|
|||||||
@@ -33,6 +33,9 @@ Use `:Ggrep` to search the work tree (or any arbitrary commit) with
|
|||||||
list. Give them a range (e.g., using visual mode and `:'<,'>Gclog`) to
|
list. Give them a range (e.g., using visual mode and `:'<,'>Gclog`) to
|
||||||
iterate over every change to that portion of the current file.
|
iterate over every change to that portion of the current file.
|
||||||
|
|
||||||
|
`:Git mergetool` loads conflicts into the quickfix list. `:Git difftool` does
|
||||||
|
the same for any arbitrary set of changes.
|
||||||
|
|
||||||
`:Gread` is a variant of `git checkout -- filename` that operates on the
|
`:Gread` is a variant of `git checkout -- filename` that operates on the
|
||||||
buffer rather than the filename. This means you can use `u` to undo it
|
buffer rather than the filename. This means you can use `u` to undo it
|
||||||
and you never get any warnings about the file changing outside Vim.
|
and you never get any warnings about the file changing outside Vim.
|
||||||
@@ -44,13 +47,15 @@ Use `:Gbrowse` to open the current file on the web front-end of your favorite
|
|||||||
hosting provider, with optional line range (try it in visual mode). Plugins
|
hosting provider, with optional line range (try it in visual mode). Plugins
|
||||||
are available for popular providers such as [GitHub][rhubarb.vim],
|
are available for popular providers such as [GitHub][rhubarb.vim],
|
||||||
[GitLab][fugitive-gitlab.vim], [Bitbucket][fubitive.vim],
|
[GitLab][fugitive-gitlab.vim], [Bitbucket][fubitive.vim],
|
||||||
[Gitee][fugitive-gitee.vim], and [Pagure][pagure].
|
[Gitee][fugitive-gitee.vim], [Pagure][pagure], and
|
||||||
|
[Phabricator][vim-phabricator].
|
||||||
|
|
||||||
[rhubarb.vim]: https://github.com/tpope/vim-rhubarb
|
[rhubarb.vim]: https://github.com/tpope/vim-rhubarb
|
||||||
[fugitive-gitlab.vim]: https://github.com/shumphrey/fugitive-gitlab.vim
|
[fugitive-gitlab.vim]: https://github.com/shumphrey/fugitive-gitlab.vim
|
||||||
[fubitive.vim]: https://github.com/tommcdo/vim-fubitive
|
[fubitive.vim]: https://github.com/tommcdo/vim-fubitive
|
||||||
[fugitive-gitee.vim]: https://github.com/linuxsuren/fugitive-gitee.vim
|
[fugitive-gitee.vim]: https://github.com/linuxsuren/fugitive-gitee.vim
|
||||||
[pagure]: https://github.com/FrostyX/vim-fugitive-pagure
|
[pagure]: https://github.com/FrostyX/vim-fugitive-pagure
|
||||||
|
[vim-phabricator]: https://github.com/jparise/vim-phabricator
|
||||||
|
|
||||||
Add `%{FugitiveStatusline()}` to `'statusline'` to get an indicator
|
Add `%{FugitiveStatusline()}` to `'statusline'` to get an indicator
|
||||||
with the current branch in your statusline.
|
with the current branch in your statusline.
|
||||||
@@ -69,13 +74,12 @@ For more information, see `:help fugitive`.
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
If you don't have a preferred installation method, one option is to install
|
Install using your favorite package manager, or use Vim's built-in package support:
|
||||||
[pathogen.vim](https://github.com/tpope/vim-pathogen), and then copy
|
|
||||||
and paste:
|
|
||||||
|
|
||||||
cd ~/.vim/bundle
|
mkdir -p ~/.vim/pack/tpope/start
|
||||||
git clone https://github.com/tpope/vim-fugitive.git
|
cd ~/.vim/pack/tpope/start
|
||||||
vim -u NONE -c "helptags vim-fugitive/doc" -c q
|
git clone https://tpope.io/vim/fugitive.git
|
||||||
|
vim -u NONE -c "helptags fugitive/doc" -c q
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
@@ -88,9 +92,8 @@ request the password via a GUI. Fugitive will configure this for you
|
|||||||
automatically if you have `ssh-askpass` or `git-gui` installed; otherwise it's
|
automatically if you have `ssh-askpass` or `git-gui` installed; otherwise it's
|
||||||
your responsibility to set this up.
|
your responsibility to set this up.
|
||||||
|
|
||||||
As an absolute last resort, you can invoke `:Git --paginate push`. Fugitive
|
If you absolutely must type in your password by hand, sidestep Fugitive and
|
||||||
recognizes the pagination request and fires up a `:terminal`, which allows for
|
use `:terminal git push`.
|
||||||
interactive password entry.
|
|
||||||
|
|
||||||
[credentials caching]: https://help.github.com/en/articles/caching-your-github-password-in-git
|
[credentials caching]: https://help.github.com/en/articles/caching-your-github-password-in-git
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -20,10 +20,9 @@ that are part of Git repositories).
|
|||||||
:G {args} but chdir to the repository tree first. For some
|
:G {args} but chdir to the repository tree first. For some
|
||||||
subcommands, a Fugitive command is called instead.
|
subcommands, a Fugitive command is called instead.
|
||||||
|
|
||||||
*:Git!*
|
|
||||||
:Git! {args} Like |:Git|, but capture the output into a temp file,
|
:Git! {args} Like |:Git|, but capture the output into a temp file,
|
||||||
:Git --no-pager {args} and |:split| that temp file. Use :0Git to
|
:Git --paginate {args} and |:split| that temp file. Use :0Git to
|
||||||
:Git -P {args} |:edit| the temp file instead. A temp file is always
|
:Git -p {args} |:edit| the temp file instead. A temp file is always
|
||||||
used for diff and log commands.
|
used for diff and log commands.
|
||||||
|
|
||||||
*:Gstatus*
|
*:Gstatus*
|
||||||
@@ -103,9 +102,23 @@ that are part of Git repositories).
|
|||||||
:Glgrep[!] [args] |:lgrep|[!] with git-grep as 'grepprg'.
|
:Glgrep[!] [args] |:lgrep|[!] with git-grep as 'grepprg'.
|
||||||
:0Git[!] grep [args]
|
:0Git[!] grep [args]
|
||||||
|
|
||||||
|
*:Git-difftool*
|
||||||
|
:Git[!] difftool [args] Invoke `git diff [args]` and load the changes into the
|
||||||
|
quickfix list. Each changed hunk gets a separate
|
||||||
|
quickfix entry unless you pass an option like
|
||||||
|
--name-only or --name-status. Jumps to the first
|
||||||
|
change unless [!] is given.
|
||||||
|
|
||||||
|
:Git difftool -y [args] Invoke `git diff [args]`, open each changed file in a
|
||||||
|
new tab, and invoke `:Gdiffsplit!` against the
|
||||||
|
appropriate commit.
|
||||||
|
|
||||||
|
*:Git-mergetool*
|
||||||
|
:Git mergetool [args] Like |:Git-difftool|, but target merge conflicts.
|
||||||
|
|
||||||
*:Gclog* *:Glog*
|
*:Gclog* *:Glog*
|
||||||
:Gclog[!] [args] Use git-log [args] to load the commit history into the
|
:Gclog[!] [args] Use git-log [args] to load the commit history into the
|
||||||
:Glog[!] [args] |quickfix| list. Jump to the first commit unless [!]
|
:Glog[!] [args] |quickfix| list. Jumps to the first commit unless [!]
|
||||||
is given.
|
is given.
|
||||||
|
|
||||||
:{range}Gclog[!] [args] Use git-log -L to load previous revisions of the given
|
:{range}Gclog[!] [args] Use git-log -L to load previous revisions of the given
|
||||||
@@ -194,7 +207,7 @@ that are part of Git repositories).
|
|||||||
focus on the current window. During a merge conflict,
|
focus on the current window. During a merge conflict,
|
||||||
this is a three-way diff against the "ours" and
|
this is a three-way diff against the "ours" and
|
||||||
"theirs" ancestors. Additional d2o and d3o maps are
|
"theirs" ancestors. Additional d2o and d3o maps are
|
||||||
provided to to obtain the hunk from the "ours" or
|
provided to obtain the hunk from the "ours" or
|
||||||
"theirs" ancestor, respectively.
|
"theirs" ancestor, respectively.
|
||||||
|
|
||||||
:Gdiffsplit! {object} Like |:Gdiffsplit|, but retain focus on the current
|
:Gdiffsplit! {object} Like |:Gdiffsplit|, but retain focus on the current
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
" fugitive.vim - A Git wrapper so awesome, it should be illegal
|
" fugitive.vim - A Git wrapper so awesome, it should be illegal
|
||||||
" Maintainer: Tim Pope <http://tpo.pe/>
|
" Maintainer: Tim Pope <http://tpo.pe/>
|
||||||
" Version: 3.1
|
" Version: 3.2
|
||||||
" GetLatestVimScripts: 2975 1 :AutoInstall: fugitive.vim
|
" GetLatestVimScripts: 2975 1 :AutoInstall: fugitive.vim
|
||||||
|
|
||||||
if exists('g:loaded_fugitive')
|
if exists('g:loaded_fugitive')
|
||||||
@@ -66,8 +66,8 @@ function! FugitivePath(...) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" FugitiveParse() takes a fugitive:// URL and returns a 2 element list
|
" FugitiveParse() takes a fugitive:// URL and returns a 2 element list
|
||||||
" containing the Git dir and an object name ("commit:file"). It's effectively
|
" containing an object name ("commit:file") and the Git dir. It's effectively
|
||||||
" then inverse of FugitiveFind().
|
" the inverse of FugitiveFind().
|
||||||
function! FugitiveParse(...) abort
|
function! FugitiveParse(...) abort
|
||||||
let path = s:Slash(a:0 ? a:1 : @%)
|
let path = s:Slash(a:0 ? a:1 : @%)
|
||||||
if path !~# '^fugitive:'
|
if path !~# '^fugitive:'
|
||||||
@@ -103,6 +103,24 @@ function! FugitiveConfig(...) abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" Retrieve a Git configuration value. An optional second argument provides
|
||||||
|
" the Git dir as with FugitiveFind(). Pass a blank string to limit to the
|
||||||
|
" global config.
|
||||||
|
function! FugitiveConfigGet(name, ...) abort
|
||||||
|
return call('FugitiveConfig', [a:name] + a:000)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Like FugitiveConfigGet(), but return a list of all values.
|
||||||
|
function! FugitiveConfigGetAll(name, ...) abort
|
||||||
|
if a:0 && type(a:1) ==# type({})
|
||||||
|
let config = a:1
|
||||||
|
else
|
||||||
|
let config = fugitive#Config(FugitiveGitDir(a:0 ? a:1 : -1))
|
||||||
|
endif
|
||||||
|
let name = substitute(a:name, '^[^.]\+\|[^.]\+$', '\L&', 'g')
|
||||||
|
return copy(get(config, name, []))
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! FugitiveRemoteUrl(...) abort
|
function! FugitiveRemoteUrl(...) abort
|
||||||
return fugitive#RemoteUrl(a:0 ? a:1 : '', FugitiveGitDir(a:0 > 1 ? a:2 : -1))
|
return fugitive#RemoteUrl(a:0 ? a:1 : '', FugitiveGitDir(a:0 > 1 ? a:2 : -1))
|
||||||
endfunction
|
endfunction
|
||||||
@@ -157,16 +175,16 @@ function! s:Tree(path) abort
|
|||||||
let config = readfile(config_file,'',10)
|
let config = readfile(config_file,'',10)
|
||||||
call filter(config,'v:val =~# "^\\s*worktree *="')
|
call filter(config,'v:val =~# "^\\s*worktree *="')
|
||||||
if len(config) == 1
|
if len(config) == 1
|
||||||
let worktree = s:Slash(FugitiveVimPath(matchstr(config[0], '= *\zs.*')))
|
let worktree = FugitiveVimPath(matchstr(config[0], '= *\zs.*'))
|
||||||
endif
|
endif
|
||||||
elseif filereadable(dir . '/gitdir')
|
elseif filereadable(dir . '/gitdir')
|
||||||
let worktree = s:Slash(fnamemodify(FugitiveVimPath(readfile(dir . '/gitdir')[0]), ':h'))
|
let worktree = fnamemodify(FugitiveVimPath(readfile(dir . '/gitdir')[0]), ':h')
|
||||||
if worktree ==# '.'
|
if worktree ==# '.'
|
||||||
unlet! worktree
|
unlet! worktree
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if exists('worktree')
|
if exists('worktree')
|
||||||
let s:worktree_for_dir[dir] = worktree
|
let s:worktree_for_dir[dir] = s:Slash(resolve(worktree))
|
||||||
let s:dir_for_worktree[s:worktree_for_dir[dir]] = dir
|
let s:dir_for_worktree[s:worktree_for_dir[dir]] = dir
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -177,10 +195,29 @@ function! s:Tree(path) abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function! s:CeilingDirectories() abort
|
||||||
|
if !exists('s:ceiling_directories')
|
||||||
|
let s:ceiling_directories = []
|
||||||
|
let resolve = 1
|
||||||
|
for dir in split($GIT_CEILING_DIRECTORIES, has('win32') ? ';' : ':', 1)
|
||||||
|
if empty(dir)
|
||||||
|
let resolve = 0
|
||||||
|
elseif resolve
|
||||||
|
call add(s:ceiling_directories, resolve(dir))
|
||||||
|
else
|
||||||
|
call add(s:ceiling_directories, dir)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
return s:ceiling_directories + get(g:, 'ceiling_directories', [])
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! FugitiveExtractGitDir(path) abort
|
function! FugitiveExtractGitDir(path) abort
|
||||||
let path = s:Slash(a:path)
|
let path = s:Slash(a:path)
|
||||||
if path =~# '^fugitive:'
|
if path =~# '^fugitive:'
|
||||||
return matchstr(path, '\C^fugitive:\%(//\)\=\zs.\{-\}\ze\%(//\|::\|$\)')
|
return matchstr(path, '\C^fugitive:\%(//\)\=\zs.\{-\}\ze\%(//\|::\|$\)')
|
||||||
|
elseif empty(path)
|
||||||
|
return ''
|
||||||
elseif isdirectory(path)
|
elseif isdirectory(path)
|
||||||
let path = fnamemodify(path, ':p:s?/$??')
|
let path = fnamemodify(path, ':p:s?/$??')
|
||||||
else
|
else
|
||||||
@@ -201,7 +238,7 @@ function! FugitiveExtractGitDir(path) abort
|
|||||||
if root =~# '\v^//%([^/]+/?)?$'
|
if root =~# '\v^//%([^/]+/?)?$'
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if index(split($GIT_CEILING_DIRECTORIES, ':'), root) >= 0
|
if index(s:CeilingDirectories(), root) >= 0
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
if root ==# $GIT_WORK_TREE && FugitiveIsGitDir(env_git_dir)
|
if root ==# $GIT_WORK_TREE && FugitiveIsGitDir(env_git_dir)
|
||||||
@@ -285,6 +322,9 @@ function! s:ProjectionistDetect() abort
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
if v:version + has('patch061') < 703
|
||||||
|
runtime! autoload/fugitive.vim
|
||||||
|
endif
|
||||||
let g:io_fugitive = {
|
let g:io_fugitive = {
|
||||||
\ 'simplify': function('fugitive#simplify'),
|
\ 'simplify': function('fugitive#simplify'),
|
||||||
\ 'resolve': function('fugitive#resolve'),
|
\ 'resolve': function('fugitive#resolve'),
|
||||||
|
|||||||
Reference in New Issue
Block a user