Compare commits

..

68 Commits

Author SHA1 Message Date
Tim Pope f61beed747 Add packed-ref handling 2015-12-01 04:04:55 -05:00
Tim Pope d854197c03 Open release page for tags on GitHub 2015-12-01 04:04:55 -05:00
Tim Pope d8ce8d1d03 Document transition to rhubarb.vim 2015-11-30 22:25:50 -05:00
Tim Pope 23faeadc7c Revert "Show all untracked files in :Gstatus window"
This reverts commit 21b6dd7aee.

Closes https://github.com/tpope/vim-fugitive/issues/726
2015-11-30 19:38:48 -05:00
Andy Russell 1ecd12d523 Add support for fish shell syntax
Closes #626.
2015-11-06 15:54:34 -05:00
Jerome Reybert f8aa87a4b5 Fix when $GIT_DIR is set and is not an absolute path 2015-11-03 09:52:22 -05:00
Jacob Niehus dba8a0705d Fix diff sometimes opening in preview window
If the previous window no longer exists when Gedit is called, the
attempt to change windows with 'wincmd p' fails and 'wincmd w' should be
used instead.
2015-10-16 23:48:38 -04:00
Tim Pope 8cf3d94a3a Support gf in git filetypes
Closes https://github.com/tpope/vim-fugitive/issues/697
2015-10-07 00:21:49 -04:00
Tim Pope 28de2a1ddd Enable jumping on @@ hunk header 2015-10-07 00:21:49 -04:00
Tim Pope 01cda4d443 :Gdiff! keeps window focus 2015-10-07 00:21:35 -04:00
Tim Pope b5188a1b4f Accept +cmd with :Gdiff 2015-10-07 00:05:07 -04:00
Tim Pope 8e63140181 Resplit when :Gstatus is final window 2015-10-07 00:05:07 -04:00
Tim Pope cec56ef5ff Extract current file logic from s:GF 2015-10-06 21:45:40 -04:00
Tim Pope 1e755064e9 Better error on :Gwrite failure
References https://github.com/tpope/vim-fugitive/issues/696
2015-10-06 20:33:41 -04:00
Daniel Hahler 0b43b51d77 Expand % instead of <amatch> in the Buf* autocommands
This is relevant in case a previous BufReadPost autocmd changes the file
name using `:file` - fugitive should use the new/current name then.
2015-10-02 19:40:37 -04:00
Daniel Hahler 5dcf8a0175 ReplaceCmd: redirect stderr to tmp file / buffer
The option `status.showUntrackedFiles=all` used with `git status` for
`:Gstatus` might cause an error, which then causes fugitive to display an
empty status window / index file.

Redirecting the stderr output is useful in this case.

The generated command was:

    git --git-dir=/home/user/.dotfiles/.git -c 'status.displayCommentPrefix=true' -c 'color.status=false' -c 'status.short=false' -c 'status.showUntrackedFiles=all' status

The error from git is related to submodules being moved to another
subdirectory, where the relative "gitdir" now does not exist anymore:

    fatal: Not a git repository: vim/bundle.old.nobackup/CLEAN/colorscheme-base16/../../../.git/modules/vim/bundle/colorscheme-base16

While that's a Git / user error after all, fugitive should be more
helpful in that case by displaying the error.

It uses the 'shellpipe' setting to detect if '2>&1' is supported (Ref:
https://github.com/tpope/vim-fugitive/pull/661#issuecomment-120438667).

Closes #661.
2015-10-02 19:39:07 -04:00
Daniel Hahler 2509641eac Add "stash" and stash refs in repo.superglob
This looks for `refs/stash` and calls `git stash list` to get all of
them in case it exists.
2015-10-02 19:27:35 -04:00
Tim Pope 073f3a37b9 Short circuit when jumping too far in blame history
References https://github.com/tpope/vim-fugitive/issues/607
2015-09-30 18:49:56 -04:00
David Elentok b7b23001de Allow using the "%" variable in git commands
Closes https://github.com/tpope/vim-fugitive/issues/686

For example, when running:

  :Git add %

neovim throws the following exception:

  E499: Empty file name for '%' or '#',
  only works with ":p:h": terminal git add %

It is a result of the tabnew command, it creates a new blank tab where
"%" is empty.

This commit changes "tabnew" to "tabedit %" so you're still working on
the same file.

Once the command is done running the tab closes.
2015-09-10 15:32:35 -04:00
Patrick Davey b319b69453 Add the "L" prefix which github requires for highlighting ranges now
Fixes https://github.com/tpope/vim-fugitive/issues/669
2015-08-02 15:26:14 -04:00
Pieter-Jan Van de Maele 03cc95cc19 Support for Ggrep when only %f is available 2015-07-20 15:06:06 -04:00
Tim Pope 7c4a906147 Support Vim without 'wildignorecase'
Closes #659.
2015-07-01 10:55:35 -04:00
Tim Pope b5b2548a87 Support older Vim without 'fileignorecase' 2015-06-30 20:39:54 -04:00
Tim Pope ca727b07f1 Better support for case insensitive file systems
Closes #451.
2015-06-30 17:43:16 -04:00
Tim Pope 0fbbe0b3a4 Open :Gcommit tab before current
Pretty ridiculous, but this seems to be the only way to return to the
right tab after closing the commit message.
2015-06-29 17:52:39 -04:00
Tim Pope 1c844375fa Add support for flagship.vim 2015-06-14 20:06:38 -04:00
Daniel Hahler e065e4f841 (Re)store the current window in s:diffoff_all
This is required to make Vim execute the "Enter" autocommands when
closing the fugitive window.

Fixes: https://github.com/tpope/vim-fugitive/issues/421
2015-05-31 12:14:23 -04:00
Eli Young 21b6dd7aee Show all untracked files in :Gstatus window
Previously, if there were untracked files inside an untracked folder,
:Gstatus would only show the new folder. Attempting to run a diff on the
folder would pass the directory name, which would result in Vim opening
a directory listing. This makes :Gstatus list all untracked files, even
if they're inside untracked folders. This requires Git >=1.4, and will
silently fall back to the old behavior on earlier versions.

Closes #605.
2015-05-22 17:50:42 -04:00
Tim Pope 935a2cccd3 Don't close window after :Gremove
This is nothing more than a change in personal preference on my part.
It's particularly annoying when :Gstatus or the quickfix window is the
only other window open.
2015-05-19 12:27:22 -04:00
Tim Pope c2908b174d Support older Git in :Gpull
Closes #645.
2015-05-19 11:15:30 -04:00
Diego Vera b0e38f08dc Make Ggrep to work properly on Mac
- Color were causing to appear strange characters in the result.
- These characters made impossible to navigate the results
- The solution was to disable colors while executing git grep
2015-05-16 10:12:41 -04:00
Ole Reifschneider 4cc201cbe3 Use the neovim terminal emulator for :Git 2015-03-31 13:40:01 -04:00
Tim Pope baa05dcfda Pass correct files to git reset --patch 2015-03-29 16:29:18 -04:00
Fedor Gusev 0095769029 Provide g:fugitive_no_maps to disable key maps
Add variable g:fugitive_no_maps. If set y<C-G> and <C-R><C-G> are not
mapped.

Resolves tpope/vim-fugitive#394
2015-02-20 15:50:02 -05:00
Eli Young e8b94098bb Support browsing with new netrw.vim
The previous fix for #594 didn't handle the case in which the net netrw
was installed on older versions of Vim.
2015-02-20 15:49:36 -05:00
Tim Pope eb8eb1850a Support for browsing with recent Vim
Closes #594.
2015-02-08 22:31:37 -05:00
Daniel Hahler 933f6a1e1d s:Diff: use winnr with <C-W>w instead of <C-W>p
This is more reliable and fixes an issue where the syntastic location
list of the original file would be focused after `:Gdiff`.

Ref: https://github.com/blueyed/vim-fugitive/commit/c99f0ff06bd1915b2f05c5750283aa9e826ad3d8#commitcomment-9434351
2015-01-25 19:23:45 -05:00
Tim Pope 34719016ec fugitive.vim 2.2
* 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.
2015-01-20 01:37:22 -05:00
Daniel Hahler 2c8461db08 Use <nomodeline> with Fugitive autocmds, and un-silent them
Closes #580.
2014-11-21 03:25:20 -05:00
John Whitley d3b98d9886 Make configured_tree a caching global function
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.
2014-11-06 13:49:30 -05:00
Tim Pope 5699f4613c Fix instaweb support
Closes #571.
2014-11-06 13:47:26 -05:00
Tim Pope 0374322ba5 Fix :Glog
Closes #545.
2014-09-02 12:05:34 -04:00
Tim Pope 90ee6fb5d2 Pass line1 and line2 as 0 for :Gbrowse without range
Closes #530.
2014-07-27 12:14:42 -04:00
Tim Pope 04fe4bfcd9 Set nobuflisted in blame buffers 2014-07-23 17:55:15 -04:00
Tom McDonald 7423d72b51 Ensure clipboard support before using * register
Closes #526.
2014-07-23 17:46:47 -04:00
Tim Pope 24d4098ceb Change arity of browse API
It's debatable whether the repo object should be passed at all, so let's
not commit to a positional parameter for it.

References #445.
2014-07-22 20:48:40 -04:00
Tim Pope 5aaa65736d Browse handler API
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.
2014-07-22 00:18:24 -04:00
Tim Pope 5d1c219ee5 Fix load order issue 2014-07-17 21:05:03 -04:00
Tim Pope a739112bfc Experimentally expose browse API
References #445.
2014-07-17 20:16:28 -04:00
Tim Pope d376506177 Try including helptags instructions in README 2014-07-17 19:57:09 -04:00
Tim Pope 9af975c82c Don't run pre-commit hook on merge 2014-07-07 21:23:22 -04:00
Tim Pope 11f89ba749 Only change 'tags' if tags file exists
Closes #402.  References #426.
2014-07-06 00:20:19 -04:00
Tim Pope 45e5317200 Try harder to avoid -esp on :Gcommit follow-up
Closes #516.
2014-07-05 19:01:00 -04:00
Tim Pope ee2b0ecdb8 Provide :Gpush and :Gfetch
Closes #450.
2014-06-30 14:30:44 -04:00
Tim Pope 94a5d6fe2f Fix :Gcommit when closing message lands in different project 2014-06-30 14:02:53 -04:00
Tim Pope 0cd33c6170 :Gcommit -v opens message in new tab
Closes #513.  References #480.
2014-06-29 14:52:43 -04:00
Tim Pope 6239f5ed8e Ignore ^[[K lines from progress output 2014-06-29 14:46:16 -04:00
Tim Pope 188692556a Fix subcommand complete when cursor mid-line 2014-06-29 11:02:47 -04:00
Tim Pope 716f3d2d4e Expose list of global git subcommands 2014-06-29 10:54:57 -04:00
Tim Pope 8576741d61 Don't quote url argument to :Browse 2014-06-26 17:08:59 -04:00
Tim Pope 32957cb552 Invoke :Browse if available to open URL
Example that invokes open(1) on OS X:

    command! -bar -nargs=1 Browse silent! !open <args>

Closes #509.
2014-06-26 17:07:07 -04:00
Tim Pope fdc8569c18 :Gblame in blame buffer deletes buffer
Closes #511.
2014-06-26 14:40:09 -04:00
Tim Pope 7fb703534a :Gmerge and :Gpull 2014-06-25 13:05:14 -04:00
Tim Pope 41cdbdcd62 Force :Gstatus U to root of tree
References #97.
2014-06-25 10:29:17 -04:00
Tim Pope 91900baad1 Set cursorbind in :Gblame 2014-06-24 23:10:57 -04:00
Tim Pope fb5661211d Colorize hashes in blame
References #369.
2014-06-24 21:54:25 -04:00
Tim Pope 276f89837f Use -L to handle :Glog range
Closes #507.  References #286.
2014-06-24 19:36:47 -04:00
Tim Pope 4581cd4217 Support -L in :Glog errorformat
References #507.
2014-06-24 19:36:47 -04:00
3 changed files with 654 additions and 214 deletions
+4 -6
View File
@@ -55,15 +55,13 @@ and `Git!` to open the output of a command in a temp file.
## Installation ## Installation
If you don't have a preferred installation method, I recommend If you don't have a preferred installation method, one option is to install
installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and [pathogen.vim](https://github.com/tpope/vim-pathogen), and then copy
then simply copy and paste: and paste:
cd ~/.vim/bundle cd ~/.vim/bundle
git clone git://github.com/tpope/vim-fugitive.git git clone git://github.com/tpope/vim-fugitive.git
vim -u NONE -c "helptags vim-fugitive/doc" -c q
Once help tags have been generated, you can view the manual with
`:help fugitive`.
If your Vim version is below 7.2, I recommend also installing If your Vim version is below 7.2, I recommend also installing
[vim-git](https://github.com/tpope/vim-git) for syntax highlighting and [vim-git](https://github.com/tpope/vim-git) for syntax highlighting and
+55 -24
View File
@@ -63,12 +63,32 @@ that are part of Git repositories).
to commit, |:Gstatus| is called instead. Unless the to commit, |:Gstatus| is called instead. Unless the
arguments given would skip the invocation of an editor arguments given would skip the invocation of an editor
(e.g., -m), a split window will be used to obtain a (e.g., -m), a split window will be used to obtain a
commit message. Write and close that window (:wq or commit message, or a new tab if -v is given. Write
|:Gwrite|) to finish the commit. Unlike when running and close that window (:wq or |:Gwrite|) to finish the
the actual git-commit command, it is possible (but commit. Unlike when running the actual git-commit
unadvisable) to muck with the index with commands like command, it is possible (but unadvisable) to alter the
git-add and git-reset while a commit message is index with commands like git-add and git-reset while a
pending. commit message is pending.
*fugitive-:Gmerge*
:Gmerge [args] Calls git-merge and loads errors and conflicted files
into the quickfix list. Opens a |:Gcommit| style
split window for the commit message if the merge
succeeds. If called during a merge conflict, the
conflicted files from the current index are loaded
into the quickfix list.
*fugitive-:Gpull*
:Gpull [args] Like |:Gmerge|, but for git-pull.
*fugitive-:Gpush*
:Gpush [args] Invoke git-push, load the results into the quickfix
list, and invoke |:cwindow| to reveal any errors.
|:Dispatch| is used if available for asynchronous
invocation.
*fugitive-:Gfetch*
:Gfetch [args] Like |:Gpush|, but for git-fetch.
*fugitive-:Ggrep* *fugitive-:Ggrep*
:Ggrep [args] |:grep| with git-grep as 'grepprg'. :Ggrep [args] |:grep| with git-grep as 'grepprg'.
@@ -84,6 +104,11 @@ that are part of Git repositories).
previous commits rather than previous file revisions previous commits rather than previous file revisions
are loaded. are loaded.
:{range}Glog [args] Use git-log -L to load previous revisions of the given
range of the current file into the quickfix list. The
cursor is positioned on the first line of the first
diff hunk for each commit.
*fugitive-:Gllog* *fugitive-:Gllog*
:Gllog [args] Like |:Glog|, but use the location list instead of the :Gllog [args] Like |:Glog|, but use the location list instead of the
quickfix list. quickfix list.
@@ -195,32 +220,38 @@ that are part of Git repositories).
:[range]Gblame [flags] Run git-blame on the given range. :[range]Gblame [flags] Run git-blame on the given range.
*fugitive-:Gbrowse* *fugitive-:Gbrowse*
:[range]Gbrowse If the remote for the current branch is on GitHub, :Gbrowse Open the current file, blob, tree, commit, or tag
open the current file, blob, tree, commit, or tag in your browser at the upstream hosting provider
(with git-web--browse) on GitHub. Otherwise, open the indicated by the "origin" remote. If a range is
current file, blob, tree, commit, or tag in given, it is appropriately appended to the URL as an
git-instaweb (if you have issues, verify you can run anchor.
"git instaweb" from a terminal). If a range is given,
it is appropriately appended to the URL as an anchor.
To use with GitHub FI, point g:fugitive_github_domains Upstream providers can be added by installing an
at a list of domains: appropriate Vim plugin. For example, GitHub can be
> supported by installing rhubarb.vim, available at
let g:fugitive_github_domains = ['https://example.com'] <https://github.com/tpope/vim-rhubarb>. (Native
~ support for GitHub is currently included, but that is
:[range]Gbrowse! Like :Gbrowse, but put the URL on the clipboard rather slated to be removed.)
than opening it.
:[range]Gbrowse {revision} If no upstream support is available, a local instance
Like :Gbrowse, but for a given |fugitive-revision|. A of git-instaweb will be started and used instead.
:Gbrowse {revision} Like :Gbrowse, but for a given |fugitive-revision|. A
useful value here is -, which ties the URL to the useful value here is -, which ties the URL to the
latest commit rather than a volatile branch. latest commit rather than a volatile branch.
:[range]Gbrowse [...]@{remote} :Gbrowse [...]@{remote} Force using the given remote rather than the remote
Force using the given remote rather than the remote
for the current branch. The remote is used to for the current branch. The remote is used to
determine which GitHub repository to link to. determine which GitHub repository to link to.
:{range}Gbrowse [args] Appends an anchor to the URL that emphasizes the
selected lines. You almost certainly want to give a
"-" argument in this case to force the URL to include
an exact revision.
:[range]Gbrowse! [args] Like :Gbrowse, but put the URL on the clipboard rather
than opening it.
MAPPINGS *fugitive-mappings* MAPPINGS *fugitive-mappings*
These maps are available everywhere. These maps are available everywhere.
+595 -184
View File
File diff suppressed because it is too large Load Diff