mirror of https://github.com/folke/lazy.nvim.git
fix(git): properly deal with failed clones. Fixes #571
This commit is contained in:
parent
5af93806aa
commit
77223786aa
|
@ -188,6 +188,8 @@ function M.setup(opts)
|
|||
M.options.lockfile = Util.norm(M.options.lockfile)
|
||||
M.options.readme.root = Util.norm(M.options.readme.root)
|
||||
|
||||
vim.fn.mkdir(M.options.root, "p")
|
||||
|
||||
if M.options.performance.reset_packpath then
|
||||
vim.go.packpath = vim.env.VIMRUNTIME
|
||||
end
|
||||
|
|
|
@ -308,14 +308,24 @@ function Spec:merge(old, new)
|
|||
end
|
||||
|
||||
function M.update_state()
|
||||
---@type string[]
|
||||
local cloning = {}
|
||||
|
||||
---@type table<string,FileType>
|
||||
local installed = {}
|
||||
Util.ls(Config.options.root, function(_, name, type)
|
||||
if type == "directory" and name ~= "readme" then
|
||||
installed[name] = type
|
||||
elseif type == "file" and name:sub(-8) == ".cloning" then
|
||||
name = name:sub(1, -9)
|
||||
cloning[#cloning + 1] = name
|
||||
end
|
||||
end)
|
||||
|
||||
for _, failed in ipairs(cloning) do
|
||||
installed[failed] = nil
|
||||
end
|
||||
|
||||
for _, plugin in pairs(Config.plugins) do
|
||||
plugin._ = plugin._ or {}
|
||||
if plugin.lazy == nil then
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
local Git = require("lazy.manage.git")
|
||||
local Lock = require("lazy.manage.lock")
|
||||
local Config = require("lazy.core.config")
|
||||
local Util = require("lazy.util")
|
||||
|
||||
---@type table<string, LazyTaskDef>
|
||||
local M = {}
|
||||
|
@ -81,6 +82,14 @@ M.clone = {
|
|||
end
|
||||
|
||||
table.insert(args, self.plugin.dir)
|
||||
|
||||
if vim.fn.isdirectory(self.plugin.dir) == 1 then
|
||||
require("lazy.manage.task.fs").clean.run(self, {})
|
||||
end
|
||||
|
||||
local marker = self.plugin.dir .. ".cloning"
|
||||
Util.write_file(marker, "")
|
||||
|
||||
self:spawn("git", {
|
||||
args = args,
|
||||
on_exit = function(ok)
|
||||
|
@ -88,6 +97,7 @@ M.clone = {
|
|||
self.plugin._.cloned = true
|
||||
self.plugin._.installed = true
|
||||
self.plugin._.dirty = true
|
||||
vim.loop.fs_unlink(marker)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue