dmtrKovalenko / dmtrKovalenko/fff

"Not in a git repo" returns

Open
#233 3 comments 0 reactions 0 assignees View on GitHub
triaged
Dominant language
Rust
Stars
10.7k
Forks
446
Avg merge
1d 21h
Merged PRs (30d)
39

Description

# fff.nvim find_in_git_root regression

## Error

- In a valid Git repository on Windows, running `find_in_git_root()` shows:
- `Not in a git repository`

## Cause

- `find_in_git_root()` reads `fuzzy.get_git_root()` immediately.
- `get_git_root()` depends on async initial scan state.
- On startup, scan state can still be empty, so `git_root` is `nil` even in a repo.

## Successful mitigation

- Wait for initial scan before reading git root.
- If scan is not ready or `git_root` is empty, fall back to:
- `git rev-parse --show-toplevel` in current `cwd`.
- This mitigation works in local testing.

## Changed code

File: `lua/fff/main.lua`

```lua
function M.find_in_git_root()
local fuzzy = require('fff.core').ensure_initialized()

local wait_ok, scan_ready = pcall(fuzzy.wait_for_initial_scan, 5000)
if not wait_ok then
vim.notify('Failed to wait for initial scan', vim.log.levels.WARN)
end

local ok, git_root = pcall(fuzzy.get_git_root)

if not scan_ready or not ok or not git_root or git_root == '' then
local cwd = vim.fn.getcwd()
local result = vim.system({ 'git', 'rev-parse', '--show-toplevel' }, { cwd = cwd, text = true }):wait()
if result.code == 0 and result.stdout and result.stdout ~= '' then
git_root = result.stdout:gsub('%s+$', '')
end
end

if not git_root or git_root == '' then
vim.notify('Not in a git repository', vim.log.levels.WARN)
return
end

M.find_files_in_dir(git_root)
end
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.