Files
dualfroz 1cfbda4ea0 docs: add README with install, configuration and migration
Written for someone who has never seen the pre-split extension: what the plugin adds to Nemo, what it costs, every config key, and the exact steps to move over from the single file version or go back.
2026-08-05 20:07:00 +02:00

123 lines
3.6 KiB
Markdown

# nemo-repo-columns
"Git Branch" and "Git Status" columns for the list view in
[Nemo](https://github.com/linuxmint/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](https://github.com/dualfroz/nemo-repo-core) 1.x
- Nemo with `nemo-python`, `git` in `PATH`
## Install
```bash
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
```
```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 status` per 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:
```bash
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`.