* fix(#1970): additional log function gating for efficiency when not logging * fix(#1970): additional log function gating for efficiency when not logging * fix(#1970): disable git integration after 10 timeouts * fix(#1970): disable git integration after 10 timeouts * fix(#1970): disable git integration after 10 timeouts * fix(#1970): cleanly kill timed out git processes * fix(#1970): revert git kill, to be completed via #1974 experiment * fix(#1970): revert git kill, to be completed via #1974 experiment
This commit is contained in:
committed by
GitHub
parent
b712b82b0c
commit
36e29c3a95
@@ -626,6 +626,7 @@ Git integration with icons and colors.
|
|||||||
|
|
||||||
*nvim-tree.git.timeout*
|
*nvim-tree.git.timeout*
|
||||||
Kills the git process after some time if it takes too long.
|
Kills the git process after some time if it takes too long.
|
||||||
|
Git integration will be disabled after 10 git jobs exceed this timeout.
|
||||||
Type: `number`, Default: `400` (ms)
|
Type: `number`, Default: `400` (ms)
|
||||||
|
|
||||||
You will still need to set |renderer.icons.show.git| `= true` or
|
You will still need to set |renderer.icons.show.git| `= true` or
|
||||||
|
|||||||
@@ -176,6 +176,13 @@ function M.purge_state()
|
|||||||
M.cwd_to_project_root = {}
|
M.cwd_to_project_root = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Disable git integration permanently
|
||||||
|
function M.disable_git_integration()
|
||||||
|
log.line("git", "disabling git integration")
|
||||||
|
M.purge_state()
|
||||||
|
M.config.git.enable = false
|
||||||
|
end
|
||||||
|
|
||||||
function M.setup(opts)
|
function M.setup(opts)
|
||||||
M.config.git = opts.git
|
M.config.git = opts.git
|
||||||
M.config.filesystem_watchers = opts.filesystem_watchers
|
M.config.filesystem_watchers = opts.filesystem_watchers
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
local log = require "nvim-tree.log"
|
local log = require "nvim-tree.log"
|
||||||
local utils = require "nvim-tree.utils"
|
local utils = require "nvim-tree.utils"
|
||||||
|
local notify = require "nvim-tree.notify"
|
||||||
|
|
||||||
local Runner = {}
|
local Runner = {}
|
||||||
Runner.__index = Runner
|
Runner.__index = Runner
|
||||||
|
|
||||||
|
local timeouts = 0
|
||||||
|
local MAX_TIMEOUTS = 5
|
||||||
|
|
||||||
function Runner:_parse_status_output(status, path)
|
function Runner:_parse_status_output(status, path)
|
||||||
-- replacing slashes if on windows
|
-- replacing slashes if on windows
|
||||||
if vim.fn.has "win32" == 1 then
|
if vim.fn.has "win32" == 1 then
|
||||||
@@ -159,6 +163,17 @@ function Runner.run(opts)
|
|||||||
|
|
||||||
if self.rc == -1 then
|
if self.rc == -1 then
|
||||||
log.line("git", "job timed out %s %s", opts.project_root, opts.path)
|
log.line("git", "job timed out %s %s", opts.project_root, opts.path)
|
||||||
|
timeouts = timeouts + 1
|
||||||
|
if timeouts == MAX_TIMEOUTS then
|
||||||
|
notify.warn(
|
||||||
|
string.format(
|
||||||
|
"%d git jobs have timed out after %dms, disabling git integration. Try increasing git.timeout",
|
||||||
|
timeouts,
|
||||||
|
opts.timeout
|
||||||
|
)
|
||||||
|
)
|
||||||
|
require("nvim-tree.git").disable_git_integration()
|
||||||
|
end
|
||||||
elseif self.rc ~= 0 then
|
elseif self.rc ~= 0 then
|
||||||
log.line("git", "job fail rc %d %s %s", self.rc, opts.project_root, opts.path)
|
log.line("git", "job fail rc %d %s %s", self.rc, opts.project_root, opts.path)
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user