mirror of
https://github.com/neovim/neovim.git
synced 2026-01-18 19:07:02 +00:00
fix(pack): actually checkout proper version of submodules
Problem: Installing plugin with submodules doesn't check out their state (due to `git clone --no-checkout` to not end up with default branch code in case of invalid `version`). Updating a plugin with submodules doesn't update their state. Solution: Update `git_checkout` helper to account for submodules. Another approach would be `git checkout --recurse-submodules ...`, but that doesn't seem to allow `--filter=blob:none` for submodules, which is nice to have. Also make `git_clone` wrapper simpler since `--no-checkout` makes `--recurse-submodules` and `--also-filter-submodules` do nothing.
This commit is contained in:
@@ -264,17 +264,12 @@ end
|
||||
--- @param url string
|
||||
--- @param path string
|
||||
local function git_clone(url, path)
|
||||
local cmd = { 'clone', '--quiet', '--no-checkout', '--recurse-submodules' }
|
||||
local cmd = { 'clone', '--quiet', '--no-checkout' }
|
||||
|
||||
if vim.startswith(url, 'file://') then
|
||||
cmd[#cmd + 1] = '--no-hardlinks'
|
||||
else
|
||||
if git_version >= vim.version.parse('2.36') then
|
||||
cmd[#cmd + 1] = '--filter=blob:none'
|
||||
cmd[#cmd + 1] = '--also-filter-submodules'
|
||||
elseif git_version >= vim.version.parse('2.27') then
|
||||
cmd[#cmd + 1] = '--filter=blob:none'
|
||||
end
|
||||
elseif git_version >= vim.version.parse('2.27') then
|
||||
cmd[#cmd + 1] = '--filter=blob:none'
|
||||
end
|
||||
|
||||
vim.list_extend(cmd, { '--origin', 'origin', url, path })
|
||||
@@ -669,6 +664,12 @@ local function checkout(p, timestamp, skip_stash)
|
||||
|
||||
git_cmd({ 'checkout', '--quiet', p.info.sha_target }, p.path)
|
||||
|
||||
local submodule_cmd = { 'submodule', 'update', '--init', '--recursive' }
|
||||
if git_version >= vim.version.parse('2.36') then
|
||||
submodule_cmd[#submodule_cmd + 1] = '--filter=blob:none'
|
||||
end
|
||||
git_cmd(submodule_cmd, p.path)
|
||||
|
||||
plugin_lock.plugins[p.spec.name].rev = p.info.sha_target
|
||||
|
||||
-- (Re)Generate help tags according to the current help files.
|
||||
|
||||
Reference in New Issue
Block a user