Skip to content

vim-fugitive diffs result in error about invalid object name 0 #1185

@jdrouhard

Description

@jdrouhard

Description

When viewing a diff with vim-fugitive, gitsigns throws this error:

Error executing callback:
.../gitsigns-repro/plugins/gitsigns//lua/gitsigns/async.lua:71: The async coroutine failed: ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:206: fatal: Not a valid object name 0

stack traceback:
        [C]: in function 'error'
        ...signs-repro/plugins/gitsigns//lua/gitsigns/debug/log.lua:136: in function 'eprint'
        ...signs-repro/plugins/gitsigns//lua/gitsigns/debug/log.lua:141: in function 'eprint'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:206: in function 'file_info'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:82: in function 'update'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:431: in function 'new'
        ...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:218: in function 'fn'
        ...tsigns-repro/plugins/gitsigns//lua/gitsigns/debounce.lua:68: in function 'attach_throttled'
        ...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:371: in function <...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:370>
stack traceback:
        [C]: in function 'error'
        .../gitsigns-repro/plugins/gitsigns//lua/gitsigns/async.lua:71: in function 'callback'
        .../gitsigns-repro/plugins/gitsigns//lua/gitsigns/async.lua:107: in function 'on_exit'
        ...drouhard/.install/share/nvim/runtime/lua/vim/_system.lua:309: in function <...drouhard/.install/share/nvim/runtime/lua/vim/_system.lua:279>

Neovim version

NVIM v0.11.0-dev-1623+g34d808b73c

Operating system and version

RHEL 8

Expected behavior

No response

Actual behavior

Shouldn't error.

Minimal config

for name, url in pairs{
  gitsigns = 'https://github.com/lewis6991/gitsigns.nvim',
  fugitive = 'https://github.com/tpope/vim-fugitive',
} do
local install_path = vim.fn.fnamemodify('plugins/'..name, ':p')
if vim.fn.isdirectory(install_path) == 0 then
vim.fn.system { 'git', 'clone', '--depth=1', url, install_path }
end
vim.opt.runtimepath:append(install_path)
end

require('gitsigns').setup{
  debug_mode = true, -- You must add this to enable debug messages
}

Steps to reproduce

  1. mkdir gitsigns_issue
  2. cd gitsigns_issue
  3. git init
  4. touch file
  5. git add file
  6. git commit -m 'initial commit'
  7. nvim --clean -u minimal.lua file
  8. :Gvdiff

Gitsigns debug messages

8.38 D run_job: git --version
13.49 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 rev-parse --show-toplevel --absolute-git-dir --abbrev-ref HEAD
15.53 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git config user.name
17.38 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git -c core.quotepath=off ls-files --stage --others --exclude-standard --eol /home/jdrouhard/scratch/gitsigns-repro/file
19.73 D watch_gitdir(1): Watching git dir
19.79 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git show e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
22.74 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git show HEAD:file
5994.38 D attach(2): Attaching (trigger=BufReadPost)
5994.51 D parse_git_path: Fugitive buffer for file 'file' from path 'nil' on commit '0'
5995.78 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git rev-parse --show-toplevel --absolute-git-dir --abbrev-ref HEAD
5997.92 D run_job: git --no-pager --no-optional-locks --literal-pathspecs -c gc.auto=0 --git-dir /home/jdrouhard/scratch/gitsigns-repro/.git -c core.quotepath=off ls-tree 0 file
5999.88 E ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua<206>: fatal: Not a valid object name 0

stack traceback:
        ...signs-repro/plugins/gitsigns//lua/gitsigns/debug/log.lua:134: in function 'eprint'
        ...signs-repro/plugins/gitsigns//lua/gitsigns/debug/log.lua:141: in function 'eprint'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:206: in function 'file_info'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:82: in function 'update'
        ...ch/gitsigns-repro/plugins/gitsigns//lua/gitsigns/git.lua:431: in function 'new'
        ...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:218: in function 'fn'
        ...tsigns-repro/plugins/gitsigns//lua/gitsigns/debounce.lua:68: in function 'attach_throttled'
        ...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:371: in function <...gitsigns-repro/plugins/gitsigns//lua/gitsigns/attach.lua:370>

Gitsigns cache

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions