refactor: delete the wrong and useless path check

The file path check is incorrect. It gives the main repository path to
lazygit, not the submodule path. Lazygit itself can do well for the
path-checking job, so just let lazygit deal with it.

Symlink check functionality is kept.

Signed-off-by: Avimitin <avimitin@gmail.com>
This commit is contained in:
Avimitin
2022-01-04 15:46:44 +08:00
parent 497ef5578e
commit 133ed492da

View File

@@ -16,6 +16,11 @@ local function is_lazygit_available()
return fn.executable('lazygit') == 1
end
local function is_symlink()
local resolved = fn.resolve(fn.expand('%:p'))
return resolved ~= fn.expand('%:p')
end
--- Get project_root_dir for git repository
local function project_root_dir()
@@ -25,21 +30,6 @@ local function project_root_dir()
vim.o.shell = 'bash'
end
-- try submodule first
local gitdir = fn.system('cd "' .. fn.expand('%:p:h') .. '" && git rev-parse --show-superproject-working-tree')
if gitdir ~= '' and fn.matchstr(gitdir, '^fatal:.*') == '' then
vim.o.shell = oldshell
return trim(gitdir)
end
-- try file location first
local gitdir = fn.system('cd "' .. fn.expand('%:p:h') .. '" && git rev-parse --show-toplevel')
local isgitdir = fn.matchstr(gitdir, '^fatal:.*') == ''
if isgitdir then
vim.o.shell = oldshell
return trim(gitdir)
end
-- try symlinked file location instead
gitdir = fn.system(
'cd "' .. fn.fnamemodify(fn.resolve(fn.expand('%:p')), ':h') .. '" && git rev-parse --show-toplevel')
@@ -163,18 +153,16 @@ local function lazygit(path)
return
end
if path == nil then
path = project_root_dir()
end
if path == nil or fn.isdirectory(path .. '/.git/') == 0 then
print('Not in a git repository')
return
if is_symlink() then
path = project_root_dir()
end
end
open_floating_window()
local cmd = 'lazygit'
if not vim.env.GIT_DIR then
if path ~= nil and not vim.env.GIT_DIR then
cmd = cmd .. ' -g "' .. path .. '/.git/"'
end
if not vim.env.GIT_WORK_TREE then
if path ~= nil and not vim.env.GIT_WORK_TREE then
cmd = cmd .. ' -w "' .. path .. '"'
end
exec_lazygit_command(cmd)