From 04b0ade6832e604fd05d711c3e86d9baf82e22d8 Mon Sep 17 00:00:00 2001 From: Chris Seickel Date: Tue, 12 Apr 2022 12:17:42 +0000 Subject: [PATCH 1/2] chore: add extra logging for giti ignored work, part of #236 --- lua/neo-tree/git/ignored.lua | 13 +++++++++++-- lua/neo-tree/git/utils.lua | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lua/neo-tree/git/ignored.lua b/lua/neo-tree/git/ignored.lua index f58fe6f9..7c0cd7ea 100644 --- a/lua/neo-tree/git/ignored.lua +++ b/lua/neo-tree/git/ignored.lua @@ -49,6 +49,8 @@ end M.mark_ignored = function(state, items) local git_roots = {} + log.trace("================================================================================") + log.trace("IGNORED: mark_ignore BEGIN...") for _, item in ipairs(items) do local root = get_root_for_item(item) if root then @@ -65,6 +67,7 @@ M.mark_ignored = function(state, items) for _, item in ipairs(repo_items) do table.insert(cmd, item) end + log.trace("IGNORED: Running cmd: ", cmd) local result = vim.fn.systemlist(cmd) if vim.v.shell_error == 128 then if type(result) == "table" then @@ -80,6 +83,7 @@ M.mark_ignored = function(state, items) --check-ignore does not indicate directories the same as 'status' so we need to --add the trailing slash to the path manually. + log.trace("IGNORED: Checking types of", #result, "items to see which ones are directories") for i, item in ipairs(result) do local stat = vim.loop.fs_stat(item) if stat and stat.type == "directory" then @@ -89,14 +93,19 @@ M.mark_ignored = function(state, items) vim.list_extend(all_results, result) end - + log.trace("IGNORED: Comparing results to mark items as ignored") + local ignored, not_ignored = 0, 0 for _, item in ipairs(items) do if M.is_ignored(all_results, item.path, item.type) then item.filtered_by = item.filtered_by or {} item.filtered_by.gitignored = true + ignored = ignored + 1 + else + not_ignored = not_ignored + 1 end end - + log.trace("IGNORED: mark_ignored is complete, ignored:", ignored, ", not ignored:", not_ignored) + log.trace("================================================================================") return all_results end diff --git a/lua/neo-tree/git/utils.lua b/lua/neo-tree/git/utils.lua index d856752b..7da24e8a 100644 --- a/lua/neo-tree/git/utils.lua +++ b/lua/neo-tree/git/utils.lua @@ -19,7 +19,7 @@ M.get_repository_root = function(path) git_root = utils.windowize_path(git_root) end - log.trace("GIT ROOT is ", git_root) + log.trace("GIT ROOT for '", path, "' is '", git_root, "'") return git_root end From 2dd519adc3fb0acb784454dfab1c00cb14d0385a Mon Sep 17 00:00:00 2001 From: Chris Seickel Date: Wed, 13 Apr 2022 00:41:06 +0000 Subject: [PATCH 2/2] fix: remove git root lookup from git check ignored, may fix #236 --- lua/neo-tree/git/ignored.lua | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/lua/neo-tree/git/ignored.lua b/lua/neo-tree/git/ignored.lua index 7c0cd7ea..b8c3cd87 100644 --- a/lua/neo-tree/git/ignored.lua +++ b/lua/neo-tree/git/ignored.lua @@ -48,36 +48,29 @@ local get_root_for_item = function(item) end M.mark_ignored = function(state, items) - local git_roots = {} + local folders = {} log.trace("================================================================================") log.trace("IGNORED: mark_ignore BEGIN...") for _, item in ipairs(items) do - local root = get_root_for_item(item) - if root then - if not git_roots[root] then - git_roots[root] = {} + local folder = utils.split_path(item.path) + if folder then + if not folders[folder] then + folders[folder] = {} end - table.insert(git_roots[root], item.path) + table.insert(folders[folder], item.path) end end local all_results = {} - for repo_root, repo_items in pairs(git_roots) do - local cmd = {"git", "-C", repo_root, "check-ignore"} - for _, item in ipairs(repo_items) do + for folder, folder_items in pairs(folders) do + local cmd = {"git", "-C", folder, "check-ignore"} + for _, item in ipairs(folder_items) do table.insert(cmd, item) end log.trace("IGNORED: Running cmd: ", cmd) local result = vim.fn.systemlist(cmd) if vim.v.shell_error == 128 then - if type(result) == "table" then - if vim.startswith(result[1], "fatal:") then - -- These errors are all about not being in a repository - log.error("Error in git.mark_ignored: ", result[1]) - result = {} - end - end - log.error("Failed to load ignored files for", state.path, ":", result) + log.debug("Failed to load ignored files for", state.path, ":", result) result = {} end