Skip to content

Reconsider lazy-lock.json in .gitignore — friction for the recommended fork-and-track workflow #1962

@codemedic

Description

@codemedic

Background

The README already acknowledges this tension:

"You likely want to remove lazy-lock.json from your fork's .gitignore file too — it's ignored in the kickstart repo to make maintenance easier, but it's recommended to track it in version control."

This issue proposes resolving it at the source rather than continuing to document a workaround.

How users end up using this repo

The README recommends forking and customising. Many users go a step further — maintaining an upstream remote to periodically pull in improvements from nvim-lua/kickstart.nvim while keeping personalisation in a separate branch. For example, my own fork does exactly this.

In that workflow, every upstream sync can introduce a conflict on the lazy-lock.json ignore entry, requiring the manual edit to be re-applied.

The problem

Users who want to track lazy-lock.json (as lazy.nvim recommends) need to manually edit .gitignore to opt in and maintain that edit across upstream syncs. This is a minor but recurring friction point for what is likely a common usage pattern.

Proposed alternative

  1. Remove lazy-lock.json from .gitignore — fork users track it by default with no manual edit required
  2. Add a CODEOWNERS entry for lazy-lock.json to flag any upstream PR that inadvertently includes it — though note this is only a soft gate unless branch protection is configured to enforce CODEOWNERS review; a lightweight CI check would provide a more reliable hard block
  3. Document .git/info/exclude for contributors working directly against the upstream clone who want to suppress the untracked file locally without touching .gitignore

Outcome

Current Proposed
Fork users track lazy-lock.json Manual .gitignore edit required Works out of the box
Upstream sync conflicts on .gitignore Possible Gone
Upstream PRs accidentally including the file Blocked by ignore (blunt) Flagged via CODEOWNERS / blocked by CI
Contributors working on upstream directly Fine One-time .git/info/exclude setup

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions