Plugin sync refuses bare-repo layouts, retries undeletable directories, and redownloads vanished plugins.
What's wrong with this entry?
Plugin sync now skips any path component named .git during extraction and refuses a tree that looks like a bare git repository. Directories that could not be removed are recorded and retried on the next sync, and a previously synced plugin whose directory has disappeared is downloaded again.
- Undeletable directories go into a new
staleDirslist in the plugin manifest, so cleanup is retried rather than forgotten. - Removal of trashed directories is drained in a
finallyblock, so a failure mid-sync no longer leaves the work half done.
extracted tree carries a bare-repo layout
Strings lifted out of the shipped bundle, so the claim above can be checked against them.