commit 8e740db70c04923217339b6b3f916d244fc7dec1
parent 4598305e0b651608fde9056488b6673e82819f13
Author: Mickaƫl RAYBAUD-ROIG <1268110+m-r-r@users.noreply.github.com>
Date: Thu, 9 Oct 2025 22:40:26 +0200
fix(vim.pack): skip checkout on bad `version` #36038
Refs: #36037
Diffstat:
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/runtime/lua/vim/pack.lua b/runtime/lua/vim/pack.lua
@@ -144,7 +144,7 @@ end
--- @param url string
--- @param path string
local function git_clone(url, path)
- local cmd = { 'clone', '--quiet', '--origin', 'origin' }
+ local cmd = { 'clone', '--quiet', '--origin', 'origin', '--no-checkout' }
if vim.startswith(url, 'file://') then
cmd[#cmd + 1] = '--no-hardlinks'
diff --git a/test/functional/plugin/pack_spec.lua b/test/functional/plugin/pack_spec.lua
@@ -583,6 +583,16 @@ describe('vim.pack', function()
eq(false, vim.tbl_contains(rtp, after_dir))
end)
+ it('does not checkout on bad `version`', function()
+ local err = pcall_err(exec_lua, function()
+ vim.pack.add({ { src = repos_src.basic, version = 'not-exist' } })
+ end)
+ matches('`not%-exist` is not a branch/tag/commit', err)
+ local plug_path = pack_get_plug_path('basic')
+ local entries = vim.iter(vim.fs.dir(plug_path)):totable()
+ eq({ { '.git', 'directory' } }, entries)
+ end)
+
it('can install from the Internet', function()
t.skip(skip_integ, 'NVIM_TEST_INTEG not set: skipping network integration test')
exec_lua(function()