fix(#2382): git watcher handles worktrees and submodules, via --absolute-git-dir when it is available (#2389)
* fix(#2382): use --absolute-git-dir when available * fix(#2382): use --absolute-git-dir when available * fix(#2382): rename private git members, destroy git watchers on purge * fix(#2382): consistent naming of toplevel * fix(#2382): more doc and safety * fix(#2382): consistent naming of toplevel * fix(#2382): consistent naming of toplevel
This commit is contained in:
committed by
GitHub
parent
00741206c2
commit
28c3980b25
@@ -22,10 +22,10 @@ local function update_status(nodes_by_path, node_ignored, status)
|
||||
end
|
||||
|
||||
local function reload_and_get_git_project(path, callback)
|
||||
local project_root = git.get_project_root(path)
|
||||
local toplevel = git.get_toplevel(path)
|
||||
|
||||
git.reload_project(project_root, path, function()
|
||||
callback(project_root, git.get_project(project_root) or {})
|
||||
git.reload_project(toplevel, path, function()
|
||||
callback(toplevel, git.get_project(toplevel) or {})
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -38,7 +38,7 @@ local function update_parent_statuses(node, project, root)
|
||||
break
|
||||
end
|
||||
|
||||
root = git.get_project_root(node.parent.absolute_path)
|
||||
root = git.get_toplevel(node.parent.absolute_path)
|
||||
|
||||
-- stop when no more projects
|
||||
if not root then
|
||||
@@ -174,10 +174,10 @@ function M.refresh_node(node, callback)
|
||||
|
||||
local parent_node = utils.get_parent_of_group(node)
|
||||
|
||||
reload_and_get_git_project(node.absolute_path, function(project_root, project)
|
||||
reload_and_get_git_project(node.absolute_path, function(toplevel, project)
|
||||
require("nvim-tree.explorer.reload").reload(parent_node, project)
|
||||
|
||||
update_parent_statuses(parent_node, project, project_root)
|
||||
update_parent_statuses(parent_node, project, toplevel)
|
||||
|
||||
callback()
|
||||
end)
|
||||
@@ -211,11 +211,11 @@ function M.refresh_parent_nodes_for_path(path)
|
||||
|
||||
-- refresh in order; this will expand groups as needed
|
||||
for _, node in ipairs(parent_nodes) do
|
||||
local project_root = git.get_project_root(node.absolute_path)
|
||||
local project = git.get_project(project_root) or {}
|
||||
local toplevel = git.get_toplevel(node.absolute_path)
|
||||
local project = git.get_project(toplevel) or {}
|
||||
|
||||
M.reload(node, project)
|
||||
update_parent_statuses(node, project, project_root)
|
||||
update_parent_statuses(node, project, toplevel)
|
||||
end
|
||||
|
||||
log.profile_end(profile)
|
||||
|
||||
Reference in New Issue
Block a user