nemo-repo-core dropped from 1.0.0 to 0.1.0 while its API is still unsettled, and requireCore treats the minor as the breaking component in the 0.x range.
nemo-repo-columns
"Git Branch" and "Git Status" columns for the list view in Nemo, the Cinnamon file manager.
Point Nemo at the directory where you keep your checkouts, switch to list view, and every repository shows its branch and how it stands:
project-a main clean
project-b feature/x 2 ahead, 3 changed
project-c main 1 behind, no upstream
Both columns can be sorted, so "everything with local changes" is one click on the Git Status header.
Values are computed for repository roots and left blank for everything else, so mixing repositories and ordinary folders in one listing stays readable.
Requirements
- nemo-repo-core 1.x
- Nemo with
nemo-python,gitinPATH
Install
git clone https://github.com/dualfroz/nemo-repo-core
cd nemo-repo-core && ./install.sh && cd ..
git clone https://github.com/dualfroz/nemo-repo-columns
cd nemo-repo-columns && ./install.sh
nemo -q
Then turn the columns on: in list view, right click the column headers, or use Edit > Preferences > List View to set the default for every folder.
install.sh links the plugin into ~/.local/share/nemo-python/extensions and
checks that it imports. Pass --copy to copy instead of link. ./uninstall.sh
removes it. Nothing is written outside your home directory and no root is
required.
What the columns say
Git Branch is the checked out branch, or (detached) on a detached HEAD.
Git Status is a summary, in this order, with empty parts left out:
| Part | Meaning |
|---|---|
N ahead |
Commits the upstream does not have |
N behind |
Commits you do not have |
no upstream |
The branch is not tracking anything |
N changed |
Staged plus unstaged modifications |
N untracked |
Files git does not know about |
clean |
None of the above |
A repository git cannot read shows ? and the reason.
Configuration
Shared file, read live:
~/.config/nemo-repo-core.json
{
"cache_ttl_seconds": 5,
"columns": {
"branch": true,
"status": true
}
}
columns decides which of the two are offered to Nemo at all. Unlike every
other setting in this family it is read once at startup, because Nemo asks for
the column list when it loads the extension, so changing it needs nemo -q.
cache_ttl_seconds (core setting, default 5) bounds how stale a value can be
when the change did not touch .git. Changes inside .git, such as a commit
or a fetch, update the columns immediately.
Notes
- Listing a directory of repositories runs one
git statusper repository, not one per row: results are cached and shared with the other plugins in this family. - Only repository roots get values. A folder inside a checkout is left blank on purpose, so a source tree does not repeat the same branch on every row.
Migrating from the single file version
These columns used to be part of nemo_repo_emblems.py, one file that also
provided emblems, a properties tab and a context menu. They are now separate
plugins on a shared core.
The one visible change: ahead and behind used to be written with arrows, and
are now written as 2 ahead, 1 behind.
Your config carries over automatically, ~/.config/nemo-repo-emblems.json is
copied to ~/.config/nemo-repo-core.json on first run and the old file is left
alone. Remove the old extension so nothing is drawn twice:
rm ~/.local/share/nemo-python/extensions/nemo_repo_emblems.py
nemo -q
Tested on
Linux Mint 22.2 (Zara), Cinnamon 6.4.14, Nemo 6.4.5, python-nemo 6.4.0, Python 3.12.3.
License
MIT. See LICENSE.