diff --git a/lua/diffview/tests/functional/git_adapter_spec.lua b/lua/diffview/tests/functional/git_adapter_spec.lua index 201a4370..04417168 100644 --- a/lua/diffview/tests/functional/git_adapter_spec.lua +++ b/lua/diffview/tests/functional/git_adapter_spec.lua @@ -116,6 +116,41 @@ describe("diffview.vcs.adapters.git", function() end end) ) + + it( + "prepends user-configured global flags from `git_cmd`", + test_utils.async_test(function() + local repo, adapter = make_repo_and_adapter() + + local ok, err = pcall(function() + adapter.get_command = function(_) + return { "git", "-C", "/some/path" } + end + local args = adapter:get_log_args({}) + + -- `-C /some/path` must come before `log` so git honours the flag. + local log_idx + for i, arg in ipairs(args) do + if arg == "log" then + log_idx = i + break + end + end + assert.is_not_nil(log_idx, "get_log_args must include the `log` subcommand") + assert.equals("-C", args[log_idx - 2]) + assert.equals("/some/path", args[log_idx - 1]) + end) + + vim.schedule(function() + pcall(vim.fn.delete, repo, "rf") + end) + async.await(async.scheduler()) + + if not ok then + error(err) + end + end) + ) end) describe("show_untracked", function() diff --git a/lua/diffview/vcs/adapters/git/init.lua b/lua/diffview/vcs/adapters/git/init.lua index 55bb7cad..404b89f6 100644 --- a/lua/diffview/vcs/adapters/git/init.lua +++ b/lua/diffview/vcs/adapters/git/init.lua @@ -322,7 +322,7 @@ function GitAdapter:get_show_args(path, rev) end function GitAdapter:get_log_args(args) - return utils.vec_join("log", "--no-show-signature", "--first-parent", "--stat", args) + return utils.vec_join(self:args(), "log", "--no-show-signature", "--first-parent", "--stat", args) end function GitAdapter:get_dir(path)