You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-- NOTE: See the end of this file if you are reporting an issue, etc. Ignore all the "scary" functions up top, those are-- used for setup and other operations.localM= {}
localbase_root_path=vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":p:h") .."/.min"functionM.root(path)
returnbase_root_path.."/" .. (pathor"")
endfunctionM.load_plugin(plugin_name, plugin_url)
localpackage_root=M.root("plugins/")
localinstall_destination=package_root..plugin_namevim.opt.runtimepath:append(install_destination)
ifnotvim.loop.fs_stat(package_root) thenvim.fn.mkdir(package_root, "p")
endifnotvim.loop.fs_stat(install_destination) thenprint(string.format("> Downloading plugin '%s' to '%s'", plugin_name, install_destination))
vim.fn.system({
"git",
"clone",
"--depth=1",
plugin_url,
install_destination,
})
ifvim.v.shell_error>0thenerror(string.format("> Failed to clone plugin: '%s' in '%s'!", plugin_name, install_destination),
vim.log.levels.ERROR)
endendend---@aliasPluginNamestring The plugin name, will be used as part of the git clone destination---@aliasPluginUrlstring The git url at which a plugin is located, can be a path. See https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols for details---@aliasMinPluginstable<PluginName, PluginUrl>---Do the initial setup. Downloads plugins, ensures the minimal init does not pollute the filesystem by keeping---everything self contained to the CWD of the minimal init file. Run prior to running tests, reproducing issues, etc.---@paramplugins?table<PluginName, PluginUrl>functionM.setup(plugins)
vim.opt.packpath= {} -- Empty the package path so we use only the plugins specifiedvim.opt.runtimepath:append(M.root(".min")) -- Ensure the runtime detects the root min dir-- Install required pluginsifplugins~=nilthenforplugin_name, plugin_urlinpairs(plugins) doM.load_plugin(plugin_name, plugin_url)
endendvim.env.XDG_CONFIG_HOME=M.root("xdg/config")
vim.env.XDG_DATA_HOME=M.root("xdg/data")
vim.env.XDG_STATE_HOME=M.root("xdg/state")
vim.env.XDG_CACHE_HOME=M.root("xdg/cache")
-- NOTE: Cleanup the xdg cache on exit so new runs of the minimal init doesn't share any previous state, e.g. shadavim.api.nvim_create_autocmd("VimLeave", {
callback=function()
vim.fn.system({
"rm",
"-r",
"-f",
M.root("xdg")
})
end
})
end-- NOTE: If you have additional plugins you need to install to reproduce your issue, include them in the plugins-- table within the setup call below.M.setup({
plenary="https://github.com/nvim-lua/plenary.nvim.git",
telescope="https://github.com/nvim-telescope/telescope.nvim",
diffview="https://github.com/sindrets/diffview.nvim",
neogit="https://github.com/NeogitOrg/neogit"
})
-- WARN: Do all plugin setup, test runs, reproductions, etc. AFTER calling setup with a list of plugins!-- Basically, do all that stuff AFTER this line.require("neogit").setup({}) -- For instance, setup Neogit
The text was updated successfully, but these errors were encountered:
Description
Neogit does not work with bare repositories properly. Popups such as
worktree
fail with errors.This happens due to wrong assumptions about porcelain output.
In a bare repository, the output for e.g.
git worktree list --porcelain
may bebut it expects each worktree info to consist of 3 lines and uses an out-of-bounds index.
Additionally,
:Neogit
should not error but perhaps show that it's working in a bare repository.Neovim version
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1723675123
Operating system and version
Linux 6.10.6-arch1-1 x86_64 GNU/Linux
Steps to reproduce
git clone --bare --depth 1 https://github.com/NeogitOrg/neogit
cd neogit.git && nvim
:Neogit
and try to perform actions.Expected behavior
No response
Actual behavior
Errors due to out-of-bounds indexing.
Minimal config
The text was updated successfully, but these errors were encountered: