From eeaba25642392532901cd4c95c23054e9a7ba2b3 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 24 Jun 2026 09:41:43 +0200 Subject: feat: repo list - list all repos, public and private New gitctl repo list / helper list-repos verb. Source of truth is the bare repos on disk (REPO_BASE/*.git), not cgitrc, so private repos (absent from cgitrc since cgit auto-discovery is off) show too. Each repo is tagged PUB/PRIV by cgitrc membership, with its section and a 60-char description from the repo's description file. Client renders an aligned table, green public / dim private on a TTY. Adds repo_sections_from() primitive; find_repo_section becomes a thin lookup over it. Self-tests cover the cgitrc parse and a temp-FS scan. Updates README, SKILL.md, bash completion (repo list action), TODO. Co-Authored-By: Claude Opus 4.8 --- README.md | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index a965012..96fdad3 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,7 @@ ssh git_push info # gitolite access check gitctl sections list gitctl sections add "Generic Projects" gitctl repo create publisher --section SlackBuilds --desc "..." +gitctl repo list gitctl repo desc publisher "a new description" gitctl repo add-remote publisher --remote-name origin gitctl sync @@ -185,6 +186,10 @@ git push -u origin master - `repo create` shows the gitolite.conf diff and asks before committing. On decline it reverts the conf edit, leaving a clean tree. +- `repo list` lists every bare repo on disk, not just the cgit-exposed ones, so + private repos show too. A `VIS` column marks each `PUB` (present in cgitrc) or + `PRIV`; on a terminal public rows are green and private dim. The description + comes from each repo's `description` file, truncated to 60 chars. - `--desc` never writes cgit `repo.desc=` directly. It writes the bare repo's `description` file and runs sync, the single writer. - Every operation is idempotent and safe to re-run. -- cgit v1.2.3