| Age | Commit message (Collapse) | Author | Files | Lines |
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
A repo create that dies at the y/N prompt leaves the stanza uncommitted
in the working tree; stanza_exists reads the working file, so a re-run
skips Phase 1 and times out waiting for a bare repo gitolite was never
told to build. Records recovery and fix options.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
- Bash completion now completes repo NAMES for desc/delete/add-remote at
the name position, sourced from `gitctl repo list` (first field, header
row dropped). One ssh call, only at that position, so a stray Tab never
hits the network; the leading -y is handled.
- call_helper prefixes every passthrough line from the helper (and the
sync script it runs) with "server: " via _server_prefixed, so output
like "No changes." reads as remote output instead of interleaved local
noise. quiet=True callers (repo list) still get raw stdout to parse.
Client-only, no helper redeploy needed. Self-test pins _server_prefixed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
- CLAUDE.md: new hard rule that removal functions are exact inverses of
their add counterparts (round-trip self-tests); TRASH_DIR added to the
server constants; verified-live list extended with list-repos and a
full delete cycle.
- README: TRASH_DIR in the server-install constants and its dir note.
- TODO: items 1-3 already marked done; cross-cutting work folded in;
remaining leftovers listed (repo-name completion, the cosmetic
No changes. echo, and the YAGNI gc-trash prune verb).
- Removed all pre-existing em dashes from CLAUDE.md and README.
Docs only, no code change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
gitctl repo delete <name> removes a repo from all three places it lives,
the inverse of repo create:
- gitolite stanza via remove_stanza (inverse of add_stanza), committed
and pushed FIRST so gitolite stops serving the repo before its bytes
move.
- cgit block via the new delete-repo helper verb (remove_repo_block,
inverse of insert_repo_block), backed up and synced.
- the bare repo is MOVED to TRASH_DIR (/var/lib/gitolite3/trash,
timestamped) with a .trashinfo breadcrumb, not rm, so it is
recoverable. A realpath check keeps the move one level under REPO_BASE.
Always confirms; the global -y is deliberately not honored (cmd_delete
never reads a.yes). Idempotent: a piece already gone is skipped.
Partial failure is resumable by re-running, like create. Both inverse
functions are pinned by add/insert-then-remove round-trip self-tests
plus middle/last/missing cases; trash_repo and do_delete_repo run on
temp dirs. Verified live: create then delete round-trips against the
real gitolite.conf, bare repo lands in the trash dir intact.
Helper changed: redeploy gitctl-helper to the server.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
repo create's y/N push confirmation can now be skipped with -y. The flag
is global (top-level parser), so it goes before the subcommand:
gitctl -y repo create ... . The diff is still printed and an
auto-confirmed note shown. -y does NOT bypass SSH key auth (the phase-1
push still needs the password / smartcard touch), so creation is never
fully unattended.
Hard wall: -y is never honored by a future destructive delete; the flag
help, a client comment, and TODO item 1 all record this. Bash completion
offers -y at the top level and transparently skips a leading -y when
resolving the subcommand. Self-test pins the parse round-trip.
Client-only change; the server helper is unchanged, no redeploy needed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
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 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|