6ef1c195e3
git boundary: Pull/Push/Commit/DiscardAll (discard is 1.4-destructive). Scanner.RefreshRepo re-scans one repo after a mutation. Service GitFetch/GitPull/GitPush/GitCommit/GitDiscard record a git-* activity event and refresh on success; service.New takes a refresh hook. HTTP POST /api/repo/git. New <repo-menu> overlay with plain-language commands (Get latest/Publish/Check for updates/Save my work/Set active/Ask Claude to switch/Copy path/Discard all changes), summoned by repo-list's repo:contextmenu. Added service test for commit/discard on a temp repo. Verified the menu live for safe commands. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
122 lines
5.1 KiB
HTML
122 lines
5.1 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>GitManager — Help</title>
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
<style>
|
|
header {
|
|
display: flex; align-items: baseline; gap: 16px;
|
|
padding: 12px 20px; background: var(--surface-1);
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
header h1 { margin: 0; font-size: 16px; }
|
|
header nav { margin-left: auto; }
|
|
main { max-width: 760px; padding: 20px; }
|
|
h2 { font-size: 15px; margin-top: 28px; }
|
|
code { background: var(--surface-2); padding: 1px 5px; border-radius: var(--radius-sm); }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>GitManager</h1>
|
|
<nav><a href="/">← Dashboard</a></nav>
|
|
</header>
|
|
<main>
|
|
<h1>Using GitManager</h1>
|
|
<p>
|
|
GitManager scans the folders you configure and shows every Git repository
|
|
it finds, with each repo's current branch, whether it has uncommitted
|
|
changes, and how far ahead or behind its upstream it is.
|
|
</p>
|
|
|
|
<h2>Getting started</h2>
|
|
<ol>
|
|
<li>Copy <code>.env.example</code> to <code>.env</code>.</li>
|
|
<li>Set <code>GIT_REPO_ROOTS</code> to the folders that hold your repos.</li>
|
|
<li>Run <code>docker compose up</code> and open the dashboard.</li>
|
|
</ol>
|
|
|
|
<h2>Reading the dashboard</h2>
|
|
<ul>
|
|
<li><strong>Branch</strong> — the checked-out branch (or <code>HEAD</code> when detached).</li>
|
|
<li><strong>Dirty</strong> — the working tree has staged or unstaged changes.</li>
|
|
<li><strong>Ahead / behind</strong> — commits your branch leads or trails its upstream by.</li>
|
|
</ul>
|
|
|
|
<h2>Right-click commands</h2>
|
|
<p>
|
|
Right-click any repository for a menu of plain-language commands — no git
|
|
knowledge needed:
|
|
</p>
|
|
<ul>
|
|
<li><strong>Get latest</strong> — pull the newest changes.</li>
|
|
<li><strong>Publish</strong> — push your commits.</li>
|
|
<li><strong>Check for updates</strong> — fetch without changing your files.</li>
|
|
<li><strong>Save my work…</strong> — commit everything (asks for a message).</li>
|
|
<li><strong>Set as active project</strong> / <strong>Ask Claude to switch here</strong>.</li>
|
|
<li><strong>Copy path</strong>.</li>
|
|
<li><strong>Discard all changes…</strong> — throw away uncommitted edits
|
|
(asks you to confirm; can't be undone).</li>
|
|
</ul>
|
|
<p>
|
|
What each command did shows up in the activity panel. (Get latest / Publish /
|
|
Check for updates need your server to have git credentials; until then they'll
|
|
report a sign-in error.)
|
|
</p>
|
|
|
|
<h2>Repository details</h2>
|
|
<p>
|
|
Click any repository in the list to open its details on the right: its
|
|
full path and current branch, its remotes and their URLs, every local
|
|
branch (with the one you're on marked and its upstream shown), and the 20
|
|
most recent commits.
|
|
</p>
|
|
|
|
<h2>Active project & activity</h2>
|
|
<p>
|
|
Clicking a repository also makes it your <strong>active project</strong> —
|
|
the one you're currently focused on — shown in the activity panel at the
|
|
bottom. That panel also lists recent actions by both you and Claude, updating
|
|
live. When GitManager is connected to Claude, Claude can see your active
|
|
project and this activity, so you stay on the same page.
|
|
</p>
|
|
|
|
<h2>Pull requests: Merge & clean up</h2>
|
|
<p>
|
|
When a repository is hosted on your Gitea server, its open pull requests
|
|
appear under the details panel. Each has a <strong>Merge & clean up</strong>
|
|
button: it squash-merges the pull request and <strong>deletes its
|
|
branch</strong> in one step, so finished work doesn't leave branches lying
|
|
around. You'll be asked to confirm — it names the pull request and the branch
|
|
that will be deleted — because it can't be undone (the merged history stays
|
|
on the server; only the branch is removed). If you don't use a Gitea server,
|
|
this section stays hidden.
|
|
</p>
|
|
|
|
<h2>Handing a project off to Claude</h2>
|
|
<p>
|
|
When GitManager is connected to Claude, you can hand the current project
|
|
off. Select the repository (that makes it your active project), then click
|
|
<strong>"Ask Claude to switch to …"</strong> in the handoff bar. Claude
|
|
won't drop what it's doing — it finishes to a safe stopping point (saving
|
|
any in-progress work) and then switches. You'll see a "waiting…" message
|
|
while it wraps up, and a confirmation with a short note of where it left the
|
|
previous project once it has switched. You can <strong>Cancel</strong> a
|
|
pending request any time before Claude completes it.
|
|
</p>
|
|
|
|
<h2>Background refresh</h2>
|
|
<p>
|
|
The dashboard refreshes on its own. By default it does <em>not</em> reach
|
|
the network — enable <code>SCAN_FETCH_ENABLED</code> if you want
|
|
ahead/behind counts kept current via <code>git fetch</code>.
|
|
</p>
|
|
|
|
<!-- Keep this page task-oriented and update it whenever a user-facing
|
|
feature changes, in the same change (AGENT.md §9.3). -->
|
|
</main>
|
|
</body>
|
|
</html>
|