♻️ refactor(vscode): 代码托管仓库抽成统一接口,Gitea 实现搬到 provider 后面,翻页改看 Link 头
This commit is contained in:
1 parent
c90d84d7f2
commit
14bee9f505
64 files changed
+1881
-2718
No files matched your search
@@ -2,8 +2,7 @@ import type { HookContext } from '../../git/worktreeHooks'
|
||||
import type { KanbanWebviewPanel } from '../KanbanPanel'
|
||||
import { execFile } from 'node:child_process'
|
||||
import { commands, Uri, window, workspace } from 'vscode'
|
||||
import { getToken } from '../../auth/secrets'
|
||||
import { detectRepo } from '../../git/remote'
|
||||
import { resolveForge } from '../../forge/context'
|
||||
import { expandTilde, killProcessesUsingWorktree, removeWorktreeDir, resolveWorktreePath } from '../../git/worktree'
|
||||
import {
|
||||
runImplTabPostCloseHook,
|
||||
@@ -130,17 +129,15 @@ export async function handleDeleteWorktree(panel: KanbanWebviewPanel, issueNumbe
|
||||
console.warn('[superpowers] failed to clear worktree state JSON:', err)
|
||||
}
|
||||
|
||||
// 连同 feature 分支一起删(本地 + 远程,best-effort)。受保护分支跳过、缺 token 只删本地,
|
||||
// 连同 feature 分支一起删(本地 + 远程,best-effort)。受保护分支跳过、解析不出代码托管仓库只删本地,
|
||||
// 逻辑与「拖到完成」共用同一个 cleanupFeatureBranch。
|
||||
const remote = await detectRepo(workspaceRoot)
|
||||
const token = remote ? await getToken(panel.context, remote.host) : undefined
|
||||
const resolved = await resolveForge(panel.context)
|
||||
await cleanupFeatureBranch({
|
||||
workspaceRoot,
|
||||
branch,
|
||||
issueNumber,
|
||||
devBranch: settingsForHook.devBranch,
|
||||
remote: remote ? { host: remote.host, owner: remote.owner, repo: remote.repo } : undefined,
|
||||
token,
|
||||
forge: resolved.ok ? resolved.forge : undefined,
|
||||
})
|
||||
|
||||
// null 才能过 postMessage 序列化;undefined 会被丢掉,webview 合并不清字段
|
||||
@@ -299,15 +296,10 @@ export async function dispatchWorktreeHook(
|
||||
*/
|
||||
export async function dispatchImplTabPostCloseAsync(panel: KanbanWebviewPanel, issueNumber: number): Promise<void> {
|
||||
try {
|
||||
const workspaceRoot = workspace.workspaceFolders?.[0]?.uri.fsPath
|
||||
if (!workspaceRoot)
|
||||
return
|
||||
const remote = await detectRepo(workspaceRoot)
|
||||
if (!remote)
|
||||
return
|
||||
const token = await getToken(panel.context, remote.host)
|
||||
if (!token)
|
||||
const resolved = await resolveForge(panel.context)
|
||||
if (!resolved.ok)
|
||||
return
|
||||
const { workspaceRoot } = resolved.forge
|
||||
const stateObj = await panel.readIssueState(issueNumber)
|
||||
const branch = typeof stateObj.branch === 'string' ? stateObj.branch : ''
|
||||
const wt = typeof stateObj.worktreePath === 'string' ? stateObj.worktreePath : ''
|
||||
|
||||
Reference in new issue
Block a user