xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit 62b97163b4da3541a1075b4995052089ff01a6ec

git: remove optimization for unchanged subtrees
The check is performed synchronously and doesn't make much sense to do
it before running `git status` asynchronously.
Author: xaizek
Author date (UTC): 2026-04-11 16:32
Committer name: xaizek
Committer date (UTC): 2026-04-11 16:35
Parent(s): 26ec4cfdbea576a29648eac1443d3cc96051e6ee
Signing key: 99DC5E4DB05F6BE2
Tree: 25ac43f0a1e7eb3037f435e306800e79712518c7
File Lines added Lines deleted
data/plugins/git/statuses.lua 0 19
File data/plugins/git/statuses.lua changed (mode: 100644) (index 2146c6215..5dd764edb)
... ... function M.get(at)
224 224 local node = init_node(make_node(cache, at), expires) local node = init_node(make_node(cache, at), expires)
225 225 node.in_git = true node.in_git = true
226 226
227 local subdirs = exec(string.format('git -C %s ls-tree -r -d --name-only -z HEAD .', vifm.escape(at)))
228 local subtree_has_changes = false
229 for subdir in string.gmatch(subdirs, '[^\0]+') do
230 if subdir ~= './' and subdir ~= '../' then
231 subtree_has_changes = true
232
233 local dir = make_node(node, subdir)
234 dir.expires = expires
235 dir.in_git = true
236 dir.status = ' '
237 end
238 end
239
240 if not subtree_has_changes then
241 node.status = ''
242 -- no need to call `git status`
243 return node
244 end
245
246 227 node.past = cached node.past = cached
247 228 fill_node { fill_node {
248 229 node = node, node = node,
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master