lewis6991 / gitsigns.nvim

Git integration for buffers
MIT License
4.91k stars 187 forks source link

Error when opening previously non-existent files with `base = '@'` #1022

Closed deponian closed 3 months ago

deponian commented 3 months ago

Description

With base = '@' in the config if you open any file that didn't exist in the previous commit you get the error below after a28bb1db506df663b063cc63f44fbbda178255a7

Neovim version

NVIM v0.10.0 Build type: Release LuaJIT 2.1.1713773202 Run "nvim -V1 -v" for more info

Operating system and version

Arch Linux 2024-05-26

Expected behavior

No errors :)

Actual behavior

Error executing luv callback:
...cal/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/async.lua:85: The coroutine failed with this message: vim/shared.lua:0: s: expected string, got nil
stack traceback:
        [C]: in function 'error'
        vim/shared.lua: in function 'validate'
        vim/shared.lua: in function 'gsplit'
        vim/shared.lua: in function 'split'
        ...local/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/git.lua:521: in function 'file_info'
        ...local/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/git.lua:405: in function 'update'
        ...local/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/git.lua:900: in function 'new'
        ...al/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:273: in function 'fn'
        .../share/nvim/lazy/gitsigns.nvim/lua/gitsigns/debounce.lua:68: in function 'attach_throttled'
        ...al/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:420: in function <...al/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:419>
stack traceback:
        [C]: in function 'error'
        ...cal/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/async.lua:85: in function 'cb'
        ...cal/share/nvim/lazy/gitsigns.nvim/lua/gitsigns/async.lua:127: in function 'on_exit'
        /usr/share/nvim/runtime/lua/vim/_system.lua:300: in function </usr/share/nvim/runtime/lua/vim/_system.lua:270>

Minimal config

for name, url in pairs{
  gitsigns = 'https://github.com/lewis6991/gitsigns.nvim',
  -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE
} do
  local install_path = vim.fn.fnamemodify('gitsigns_issue/'..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
  base = '@'
}

Steps to reproduce

  1. nvim --clean -u minimal.lua new-filename-that-didnt-exist-in-the-previous-commit.txt

Gitsigns debug messages

No response