Skip to content

Infinite Git Refresh Loop When Running Watchman #1720

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
alex-courtis opened this issue Nov 5, 2022 · 3 comments · Fixed by #1732
Closed

Infinite Git Refresh Loop When Running Watchman #1720

alex-courtis opened this issue Nov 5, 2022 · 3 comments · Fixed by #1732
Labels
bug Something isn't working

Comments

@alex-courtis
Copy link
Member

Description

Running the standard git watchman hook results in an infinite git refresh loop.

See "Using Watchman and the sample hook script" at https://github.blog/2022-06-29-improve-git-monorepo-performance-with-a-file-system-monitor/

Neovim version

NVIM v0.8.0
Build type: Release
LuaJIT 2.1.0-beta3

Operating system and version

Linux 6.0.6-arch1-1

nvim-tree version

a0f3e99

Minimal config

vim.cmd [[set runtimepath=$VIMRUNTIME]]
vim.cmd [[set packpath=/tmp/nvt-min/site]]
local package_root = "/tmp/nvt-min/site/pack"
local install_path = package_root .. "/packer/start/packer.nvim"
local function load_plugins()
  require("packer").startup {
    {
      "wbthomason/packer.nvim",
      "nvim-tree/nvim-tree.lua",
      "nvim-tree/nvim-web-devicons",
      -- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
    },
    config = {
      package_root = package_root,
      compile_path = install_path .. "/plugin/packer_compiled.lua",
      display = { non_interactive = true },
    },
  }
end
if vim.fn.isdirectory(install_path) == 0 then
  print "Installing nvim-tree and dependencies."
  vim.fn.system { "git", "clone", "--depth=1", "https://github.com/wbthomason/packer.nvim", install_path }
end
load_plugins()
require("packer").sync()
vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua setup()]]
vim.opt.termguicolors = true
vim.opt.cursorline = true

-- MODIFY NVIM-TREE SETTINGS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
_G.setup = function()
  require("nvim-tree").setup {
    log = {
      enable = true,
      truncate = true,
      types = {
        all = false,
        config = false,
        copy_paste = false,
        dev = true,
        diagnostics = false,
        git = true,
        profile = false,
        watcher = true,
      },
    },
  }
end

Steps to reproduce

cp .git/hooks/fsmonitor-watchman.sample .git/hooks/query-watchman
git config core.fsmonitor .git/hooks/query-watchman
nvim -nu /tmp/nvt-min.lua
:NvimTreeOpen
open any file
:w

Expected behavior

One debounced git refresh following write.

Actual behavior

Infinite loop of refreshes following watchman writing .git/.watchman-cookie-emperor-xxxxxx-yyy

@alex-courtis alex-courtis added the bug Something isn't working label Nov 5, 2022
@alex-courtis
Copy link
Member Author

nvim-tree.log

Following does not resolve the issue, as .git watchers are automatically created.

    filesystem_watchers = {
      ignore_dirs = {
        "^.git$",
      },
    },

@alex-courtis
Copy link
Member Author

Re-evaluate the value of watching .git directories.

@alex-courtis
Copy link
Member Author

May resolve #1719

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
1 participant