-
Notifications
You must be signed in to change notification settings - Fork 191
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
eb2dd6d
commit 9d43bd6
Showing
86 changed files
with
7,700 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
<img src="https://github.com/echasnovski/media/blob/main/mini.nvim/logo/logo_git.png" style="width: 100%"> | ||
|
||
<!-- badges: start --> | ||
[![GitHub license](https://badgen.net/github/license/echasnovski/mini.nvim)](https://github.com/echasnovski/mini.nvim/blob/main/LICENSE) | ||
<!-- badges: end --> | ||
|
||
### Git integration | ||
|
||
See more details in [Features](#features) and [help file](../doc/mini-git.txt). | ||
|
||
--- | ||
|
||
⦿ This is a part of [mini.nvim](https://github.com/echasnovski/mini.nvim) library. Please use [this link](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-git.md) if you want to mention this module. | ||
|
||
⦿ All contributions (issues, pull requests, discussions, etc.) are done inside of 'mini.nvim'. | ||
|
||
⦿ See the repository page to learn about common design principles and configuration recipes. | ||
|
||
--- | ||
|
||
If you want to help this project grow but don't know where to start, check out [contributing guides of 'mini.nvim'](https://github.com/echasnovski/mini.nvim/blob/main/CONTRIBUTING.md) or leave a Github star for 'mini.nvim' project and/or any its standalone Git repositories. | ||
|
||
## Demo | ||
|
||
https://github.com/echasnovski/mini.nvim/assets/24854248/3c2b34cd-f04f-4e30-9ca4-1ff51e2d65a2 | ||
|
||
**Note**: This demo uses custom `vim.notify()` from [mini.notify](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-notify.md) and diff line number highlighting from [mini.diff](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md). | ||
|
||
## Features | ||
|
||
- Automated tracking of [Git](https://git-scm.com/) related data: root path, status, HEAD, etc. Exposes buffer-local variables for convenient use in statusline. | ||
|
||
- `:Git` command for executing any `git` call inside file's repository root with deeper current instance integration (show output as notification/buffer, use to edit commit messages, etc.). | ||
|
||
- Helper functions to inspect Git history: | ||
- `MiniGit.show_range_history()` shows how certain line range evolved. | ||
- `MiniGit.show_diff_source()` shows file state as it was at diff entry. | ||
- `MiniGit.show_at_cursor()` shows Git related data depending on context. | ||
|
||
What it doesn't do: | ||
|
||
- Replace fully featured Git client. Rule of thumb: if feature does not rely on a state of current Neovim (opened buffers, etc.), it is out of scope. For more functionality, use either ['mini.diff'](https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-diff.md) or fully featured Git client. | ||
|
||
To read more information, see these tags in help file: | ||
- `*:Git*` | ||
- `*MiniGit-examples*` | ||
- `*MiniGit.enable()*` | ||
- `*MiniGit.get_buf_data()*` | ||
|
||
## Installation | ||
|
||
This plugin can be installed as part of 'mini.nvim' library (**recommended**) or as a standalone Git repository. | ||
|
||
During beta-testing phase there is only one branch to install from: | ||
<!-- There are two branches to install from: --> | ||
|
||
- `main` (default, **recommended**) will have latest development version of plugin. All changes since last stable release should be perceived as being in beta testing phase (meaning they already passed alpha-testing and are moderately settled). | ||
<!-- - `stable` will be updated only upon releases with code tested during public beta-testing phase in `main` branch. --> | ||
|
||
Here are code snippets for some common installation methods (use only one): | ||
|
||
<details> | ||
<summary>With <a href="https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-deps.md">mini.deps</a></summary> | ||
<table> | ||
<thead> | ||
<tr> | ||
<th>Github repo</th> <th>Branch</th> <th>Code snippet</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<!-- <td rowspan=2>'mini.nvim' library</td> <td>Main</td> <td rowspan=2><i>Follow recommended 'mini.deps' installation</i></td> --> | ||
<td rowspan=1>'mini.nvim' library</td> <td>Main</td> <td rowspan=1><i>Follow recommended 'mini.deps' installation</i></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> --> | ||
<!-- </tr> --> | ||
<tr> | ||
<!-- <td rowspan=2>Standalone plugin</td> <td>Main</td> <td><code>add('echasnovski/mini-git')</code></td> --> | ||
<td rowspan=1>Standalone plugin</td> <td>Main</td> <td><code>add('echasnovski/mini-git')</code></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> <td><code>add({ source = 'echasnovski/mini-git', checkout = 'stable' })</code></td> --> | ||
<!-- </tr> --> | ||
</tbody> | ||
</table> | ||
</details> | ||
|
||
<details> | ||
<summary>With <a href="https://github.com/folke/lazy.nvim">folke/lazy.nvim</a></summary> | ||
<table> | ||
<thead> | ||
<tr> | ||
<th>Github repo</th> <th>Branch</th> <th>Code snippet</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<!-- <td rowspan=2>'mini.nvim' library</td> <td>Main</td> <td><code>{ 'echasnovski/mini.nvim', version = false },</code></td> --> | ||
<td rowspan=1>'mini.nvim' library</td> <td>Main</td> <td><code>{ 'echasnovski/mini.nvim', version = false },</code></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> <td><code>{ 'echasnovski/mini.nvim', version = '*' },</code></td> --> | ||
<!-- </tr> --> | ||
<tr> | ||
<!-- <td rowspan=2>Standalone plugin</td> <td>Main</td> <td><code>{ 'echasnovski/mini-git', version = false },</code></td> --> | ||
<td rowspan=1>Standalone plugin</td> <td>Main</td> <td><code>{ 'echasnovski/mini-git', version = false },</code></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> <td><code>{ 'echasnovski/mini-git', version = '*' },</code></td> --> | ||
<!-- </tr> --> | ||
</tbody> | ||
</table> | ||
</details> | ||
|
||
<details> | ||
<summary>With <a href="https://github.com/junegunn/vim-plug">junegunn/vim-plug</a></summary> | ||
<table> | ||
<thead> | ||
<tr> | ||
<th>Github repo</th> <th>Branch</th> <th>Code snippet</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<!-- <td rowspan=2>'mini.nvim' library</td> <td>Main</td> <td><code>Plug 'echasnovski/mini.nvim'</code></td> --> | ||
<td rowspan=1>'mini.nvim' library</td> <td>Main</td> <td><code>Plug 'echasnovski/mini.nvim'</code></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> <td><code>Plug 'echasnovski/mini.nvim', { 'branch': 'stable' }</code></td> --> | ||
<!-- </tr> --> | ||
<tr> | ||
<!-- <td rowspan=2>Standalone plugin</td> <td>Main</td> <td><code>Plug 'echasnovski/mini-git'</code></td> --> | ||
<td rowspan=1>Standalone plugin</td> <td>Main</td> <td><code>Plug 'echasnovski/mini-git'</code></td> | ||
</tr> | ||
<!-- <tr> --> | ||
<!-- <td>Stable</td> <td><code>Plug 'echasnovski/mini-git', { 'branch': 'stable' }</code></td> --> | ||
<!-- </tr> --> | ||
</tbody> | ||
</table> | ||
</details> | ||
|
||
<br> | ||
|
||
**Important**: don't forget to call `require('mini.git').setup()` to enable its functionality. | ||
|
||
**Note**: if you are on Windows, there might be problems with too long file paths (like `error: unable to create file <some file name>: Filename too long`). Try doing one of the following: | ||
- Enable corresponding git global config value: `git config --system core.longpaths true`. Then try to reinstall. | ||
|
||
## Default config | ||
|
||
```lua | ||
-- No need to copy this inside `setup()`. Will be used automatically. | ||
{ | ||
-- General CLI execution | ||
job = { | ||
-- Path to Git executable | ||
git_executable = 'git', | ||
|
||
-- Timeout (in ms) for each job before force quit | ||
timeout = 30000, | ||
}, | ||
|
||
-- Options for `:Git` command | ||
command = { | ||
-- Default split direction | ||
split = 'auto', | ||
}, | ||
} | ||
``` | ||
|
||
## Similar plugins | ||
|
||
- [tpope/vim-fugitive](https://github.com/tpope/vim-fugitive) | ||
- [NeogitOrg/neogit](https://github.com/NeogitOrg/neogit) | ||
- [lewis6991/gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,6 +21,7 @@ local modules = { | |
'extra', | ||
'files', | ||
'fuzzy', | ||
'git', | ||
'hipatterns', | ||
'hues', | ||
'indentscope', | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
diff --git a/dir/file1 b/dir/file1 | ||
index dd2b945..b81ef66 100644 | ||
--- a/dir/file1 | ||
+++ b/dir/file1 | ||
@@ -247,3 +247,3 @@ Hunk header 1 | ||
Line 1 | ||
- Previous line 2 | ||
+ Current line 2 | ||
Line 3 | ||
@@ -317,4 +317,4 @@ | ||
Line 11 | ||
+Added line 12 | ||
+Added line 13 | ||
|
||
diff --git a/file b/file | ||
index a0a225b..9f8c05f 100644 | ||
--- a/file | ||
+++ b/file | ||
@@ -283,4 +283,4 @@ | ||
+++ | ||
-+++ Deleted line 112 | ||
---- Deleted line 113 | ||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
aaa | ||
uuu |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|
||
# This is a mock of Git template for its `GIT_EDITOR` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ref: refs/heads/tmp |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
ref: refs/heads/tmp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Line 1 | ||
Line 2 | ||
Line 3 | ||
Line 4 | ||
Line 5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
|
||
GIT-PUSH(1) Git Manual GIT-PUSH(1) | ||
|
||
NAME | ||
git-push - Update remote refs along with associated objects | ||
|
||
SYNOPSIS | ||
git push [--all | --branches | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] | ||
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-q | --quiet] [-v | --verbose] | ||
[-u | --set-upstream] [-o <string> | --push-option=<string>] | ||
[--[no-]signed|--signed=(true|false|if-asked)] | ||
[--force-with-lease[=<refname>[:<expect>]] [--force-if-includes]] | ||
[--no-verify] [<repository> [<refspec>...]] | ||
|
||
DESCRIPTION | ||
A truncated output of `git help push` for testing purposes | ||
|
||
OPTIONS | ||
<repository> | ||
The "remote" repository. Should be parsed as option. | ||
|
||
<refspec>... | ||
Specify what destination ref to update with what source object. | ||
Some other very important information. | ||
|
||
--all, --branches | ||
Push all branches (i.e. refs under refs/heads/); cannot be used with | ||
other <refspec>. | ||
|
||
--prune | ||
Remove remote branches that don’t have a local counterpart. | ||
|
||
This line contains --do-not-parse flag which should not be parsed. | ||
|
||
--another-no-parse | ||
|
||
-n, --dry-run | ||
Do everything except actually send the updates. | ||
|
||
-vv | ||
A single dash flag but with two letters afterwards. | ||
|
||
--[no-]signed, --signed=(true|false|if-asked) | ||
This is some hard to parse options. | ||
Should prefer '--signed' over '--signed='. | ||
|
||
--receive-pack=<git-receive-pack>, --exec=<git-receive-pack> | ||
Another hard to parse. | ||
|
||
--[no-]force-with-lease, --force-with-lease=<refname>, | ||
--force-with-lease=<refname>:<expect> | ||
An entry which documents same flag several times. | ||
|
||
-4, --ipv4 | ||
Use IPv4 addresses only, ignoring IPv6 addresses. | ||
|
||
-6, --ipv6 | ||
Use IPv6 addresses only, ignoring IPv4 addresses. | ||
|
||
NEW SECTION | ||
--not-an-option | ||
Although formatted as an option, it is not in an appropriate section. |
Oops, something went wrong.