@cerbur/clutch-dsh-worktree 0.1.17 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -33
- package/README.zh.md +92 -29
- package/lib/client/WorktreeSurface.d.ts.map +1 -1
- package/lib/client/WorktreeSurface.js +37 -10
- package/lib/client/WorktreeSurface.js.map +1 -1
- package/lib/client/branch/GitBranchSelector.d.ts +23 -0
- package/lib/client/branch/GitBranchSelector.d.ts.map +1 -0
- package/lib/client/branch/GitBranchSelector.js +142 -0
- package/lib/client/branch/GitBranchSelector.js.map +1 -0
- package/lib/client/context/worktree-context-store.d.ts.map +1 -1
- package/lib/client/context/worktree-context-store.js +1 -0
- package/lib/client/context/worktree-context-store.js.map +1 -1
- package/lib/client/context/worktree-context.d.ts +3 -2
- package/lib/client/context/worktree-context.d.ts.map +1 -1
- package/lib/client/context/worktree-context.js +5 -3
- package/lib/client/context/worktree-context.js.map +1 -1
- package/lib/client/dashboard/WorktreeDashboard.d.ts +4 -1
- package/lib/client/dashboard/WorktreeDashboard.d.ts.map +1 -1
- package/lib/client/dashboard/WorktreeDashboard.js +67 -69
- package/lib/client/dashboard/WorktreeDashboard.js.map +1 -1
- package/lib/client/dashboard/dashboard-selection.d.ts +4 -3
- package/lib/client/dashboard/dashboard-selection.d.ts.map +1 -1
- package/lib/client/dashboard/dashboard-selection.js +6 -4
- package/lib/client/dashboard/dashboard-selection.js.map +1 -1
- package/lib/client/dashboard/git/GitChangedFiles.d.ts +2 -1
- package/lib/client/dashboard/git/GitChangedFiles.d.ts.map +1 -1
- package/lib/client/dashboard/git/GitChangedFiles.js +8 -6
- package/lib/client/dashboard/git/GitChangedFiles.js.map +1 -1
- package/lib/client/dashboard/git/GitCommitList.d.ts +6 -1
- package/lib/client/dashboard/git/GitCommitList.d.ts.map +1 -1
- package/lib/client/dashboard/git/GitCommitList.js +34 -29
- package/lib/client/dashboard/git/GitCommitList.js.map +1 -1
- package/lib/client/dashboard/git/GitCommitStats.d.ts +8 -0
- package/lib/client/dashboard/git/GitCommitStats.d.ts.map +1 -0
- package/lib/client/dashboard/git/GitCommitStats.js +7 -0
- package/lib/client/dashboard/git/GitCommitStats.js.map +1 -0
- package/lib/client/dashboard/git/WorktreeGitOverview.d.ts.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitOverview.js +2 -1
- package/lib/client/dashboard/git/WorktreeGitOverview.js.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitPanel.d.ts +1 -1
- package/lib/client/dashboard/git/WorktreeGitPanel.d.ts.map +1 -1
- package/lib/client/dashboard/git/WorktreeGitPanel.js +28 -9
- package/lib/client/dashboard/git/WorktreeGitPanel.js.map +1 -1
- package/lib/client/dashboard/git/file-address.d.ts +5 -2
- package/lib/client/dashboard/git/file-address.d.ts.map +1 -1
- package/lib/client/dashboard/git/file-address.js +50 -7
- package/lib/client/dashboard/git/file-address.js.map +1 -1
- package/lib/client/dashboard/git/git-facts.js +1 -1
- package/lib/client/dashboard/git/git-facts.js.map +1 -1
- package/lib/client/dashboard/git/useWorktreeGitState.d.ts +7 -2
- package/lib/client/dashboard/git/useWorktreeGitState.d.ts.map +1 -1
- package/lib/client/dashboard/git/useWorktreeGitState.js +84 -21
- package/lib/client/dashboard/git/useWorktreeGitState.js.map +1 -1
- package/lib/client/dsh-icons.d.ts +2 -0
- package/lib/client/dsh-icons.d.ts.map +1 -1
- package/lib/client/dsh-icons.js +2 -0
- package/lib/client/dsh-icons.js.map +1 -1
- package/lib/client/locales.d.ts +40 -2
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +46 -8
- package/lib/client/locales.js.map +1 -1
- package/lib/client/select/SearchableSingleSelect.d.ts +44 -0
- package/lib/client/select/SearchableSingleSelect.d.ts.map +1 -0
- package/lib/client/select/SearchableSingleSelect.js +180 -0
- package/lib/client/select/SearchableSingleSelect.js.map +1 -0
- package/lib/client/select/WorktreeSelector.d.ts +14 -0
- package/lib/client/select/WorktreeSelector.d.ts.map +1 -0
- package/lib/client/select/WorktreeSelector.js +11 -0
- package/lib/client/select/WorktreeSelector.js.map +1 -0
- package/lib/client/surface/actions/useLifecycleActions.js +1 -1
- package/lib/client/surface/actions/useLifecycleActions.js.map +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.d.ts +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.d.ts.map +1 -1
- package/lib/client/surface/actions/useWorktreeRegistration.js +32 -11
- package/lib/client/surface/actions/useWorktreeRegistration.js.map +1 -1
- package/lib/client/surface/components/RegistrationDialog.d.ts +3 -3
- package/lib/client/surface/components/RegistrationDialog.d.ts.map +1 -1
- package/lib/client/surface/components/RegistrationDialog.js +70 -5
- package/lib/client/surface/components/RegistrationDialog.js.map +1 -1
- package/lib/client/surface/components/WorkspaceTree.d.ts.map +1 -1
- package/lib/client/surface/components/WorkspaceTree.js +11 -8
- package/lib/client/surface/components/WorkspaceTree.js.map +1 -1
- package/lib/client/surface/components/dialogs.d.ts +1 -1
- package/lib/client/surface/components/dialogs.d.ts.map +1 -1
- package/lib/client/surface/components/dialogs.js +24 -15
- package/lib/client/surface/components/dialogs.js.map +1 -1
- package/lib/client/surface/state/useRegistrationState.d.ts +6 -1
- package/lib/client/surface/state/useRegistrationState.d.ts.map +1 -1
- package/lib/client/surface/state/useRegistrationState.js +7 -0
- package/lib/client/surface/state/useRegistrationState.js.map +1 -1
- package/lib/client/surface/types.d.ts +5 -1
- package/lib/client/surface/types.d.ts.map +1 -1
- package/lib/client/view/worktree-error-copy.d.ts.map +1 -1
- package/lib/client/view/worktree-error-copy.js +4 -0
- package/lib/client/view/worktree-error-copy.js.map +1 -1
- package/lib/client/view/worktree-view-read.d.ts +4 -2
- package/lib/client/view/worktree-view-read.d.ts.map +1 -1
- package/lib/client/view/worktree-view-read.js +34 -17
- package/lib/client/view/worktree-view-read.js.map +1 -1
- package/lib/client/worktree-connection.d.ts +3 -0
- package/lib/client/worktree-connection.d.ts.map +1 -1
- package/lib/client/worktree-connection.js +18 -1
- package/lib/client/worktree-connection.js.map +1 -1
- package/lib/client.js +1386 -434
- package/lib/client.js.map +1 -1
- package/lib/contract/index.contract.js +15 -0
- package/lib/contract/index.contract.js.map +1 -1
- package/lib/contract/index.d.ts +69 -12
- package/lib/contract/index.d.ts.map +1 -1
- package/lib/contract/index.js +3 -0
- package/lib/contract/index.js.map +1 -1
- package/lib/host/remote.d.ts.map +1 -1
- package/lib/host/remote.js +7 -0
- package/lib/host/remote.js.map +1 -1
- package/lib/host/service.d.ts +13 -6
- package/lib/host/service.d.ts.map +1 -1
- package/lib/host/service.js +18 -0
- package/lib/host/service.js.map +1 -1
- package/lib/manage/manager-git-history.d.ts +5 -7
- package/lib/manage/manager-git-history.d.ts.map +1 -1
- package/lib/manage/manager-git-history.js +158 -65
- package/lib/manage/manager-git-history.js.map +1 -1
- package/lib/manage/manager-git-paths.d.ts +7 -0
- package/lib/manage/manager-git-paths.d.ts.map +1 -0
- package/lib/manage/manager-git-paths.js +62 -0
- package/lib/manage/manager-git-paths.js.map +1 -0
- package/lib/manage/manager-worktrees.d.ts +9 -1
- package/lib/manage/manager-worktrees.d.ts.map +1 -1
- package/lib/manage/manager-worktrees.js +69 -14
- package/lib/manage/manager-worktrees.js.map +1 -1
- package/lib/manage/manager.d.ts +12 -5
- package/lib/manage/manager.d.ts.map +1 -1
- package/lib/manage/manager.js +64 -3
- package/lib/manage/manager.js.map +1 -1
- package/lib/provider/git/adapter.d.ts +13 -12
- package/lib/provider/git/adapter.d.ts.map +1 -1
- package/lib/provider/git/adapter.js +152 -29
- package/lib/provider/git/adapter.js.map +1 -1
- package/lib/provider/git/branch-name.d.ts +5 -0
- package/lib/provider/git/branch-name.d.ts.map +1 -0
- package/lib/provider/git/branch-name.js +16 -0
- package/lib/provider/git/branch-name.js.map +1 -0
- package/lib/provider/git/branches.d.ts +11 -0
- package/lib/provider/git/branches.d.ts.map +1 -0
- package/lib/provider/git/branches.js +37 -0
- package/lib/provider/git/branches.js.map +1 -0
- package/lib/provider/sidecar/repository.d.ts.map +1 -1
- package/lib/provider/sidecar/repository.js +2 -1
- package/lib/provider/sidecar/repository.js.map +1 -1
- package/lib/provider/sidecar/sidecar-schema.d.ts.map +1 -1
- package/lib/provider/sidecar/sidecar-schema.js +2 -0
- package/lib/provider/sidecar/sidecar-schema.js.map +1 -1
- package/lib/provider/transaction/operations/create.d.ts.map +1 -1
- package/lib/provider/transaction/operations/create.js +18 -6
- package/lib/provider/transaction/operations/create.js.map +1 -1
- package/lib/provider/transaction/recovery/failure-recovery.d.ts.map +1 -1
- package/lib/provider/transaction/recovery/failure-recovery.js +3 -2
- package/lib/provider/transaction/recovery/failure-recovery.js.map +1 -1
- package/lib/provider/transaction/recovery/recover.d.ts.map +1 -1
- package/lib/provider/transaction/recovery/recover.js +8 -5
- package/lib/provider/transaction/recovery/recover.js.map +1 -1
- package/lib/provider/transaction/support/journal.d.ts.map +1 -1
- package/lib/provider/transaction/support/journal.js +1 -0
- package/lib/provider/transaction/support/journal.js.map +1 -1
- package/lib/provider/types.d.ts +24 -4
- package/lib/provider/types.d.ts.map +1 -1
- package/lib/provider/types.js.map +1 -1
- package/lib/tool/list-worktrees.d.ts.map +1 -1
- package/lib/tool/list-worktrees.js +9 -2
- package/lib/tool/list-worktrees.js.map +1 -1
- package/lib/tool/new-worktree.js +2 -2
- package/lib/tool/new-worktree.js.map +1 -1
- package/lib/typert.host.js +216 -46
- package/lib/typert.remote-client.d.ts +11 -5
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +216 -46
- package/package.json +4 -2
package/lib/manage/manager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AdoptWorktreeBranchInput, BranchRecord, SessionBinding, WorktreeId, WorktreeImportCandidate, WorktreeGitCommitFiles, WorktreeGitCommitFilesRequest, WorktreeGitFileDiff, WorktreeGitFileDiffRequest, WorktreeGitHistory, WorktreeRecord, WorkspaceId } from '../contract/index.js';
|
|
1
|
+
import type { AdoptWorktreeBranchInput, BranchRecord, SessionBinding, WorktreeId, WorktreeImportCandidate, WorktreeGitCommitFiles, WorktreeGitCommitFilesRequest, WorktreeGitFileDiff, WorktreeGitFileDiffRequest, WorktreeGitHistory, WorktreeGitHistoryRequest, WorktreeRecord, WorkspaceId, WorkspaceCheckout } from '../contract/index.js';
|
|
2
2
|
import type { WorktreeManagerOptions, WorktreeManagerService } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Worktree/Session 用例编排器:DSH 只提供权威只读事实,Git 承担 worktree 副作用,sidecar 只保存外部关系。
|
|
@@ -37,11 +37,10 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
|
|
|
37
37
|
listWorktrees(input: {
|
|
38
38
|
readonly workspaceId: WorkspaceId;
|
|
39
39
|
}): Promise<readonly WorktreeRecord[]>;
|
|
40
|
-
|
|
40
|
+
getWorkspaceGitState(input: {
|
|
41
41
|
readonly workspaceId: WorkspaceId;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}): Promise<WorktreeGitHistory>;
|
|
42
|
+
}): Promise<import("../contract/index.js").WorkspaceGitState>;
|
|
43
|
+
listWorktreeCommits(input: WorktreeGitHistoryRequest): Promise<WorktreeGitHistory>;
|
|
45
44
|
listWorktreeCommitFiles(input: WorktreeGitCommitFilesRequest): Promise<WorktreeGitCommitFiles>;
|
|
46
45
|
getWorktreeCommitFileDiff(input: WorktreeGitFileDiffRequest): Promise<WorktreeGitFileDiff>;
|
|
47
46
|
listImportCandidates(input: {
|
|
@@ -50,10 +49,18 @@ export declare class WorktreeManagerImpl implements WorktreeManagerService {
|
|
|
50
49
|
listBranches(input: {
|
|
51
50
|
readonly workspaceId: WorkspaceId;
|
|
52
51
|
}): Promise<readonly BranchRecord[]>;
|
|
52
|
+
fetchRemoteBranches(input: {
|
|
53
|
+
readonly workspaceId: WorkspaceId;
|
|
54
|
+
}): Promise<readonly BranchRecord[]>;
|
|
55
|
+
getWorkspaceCheckout(input: {
|
|
56
|
+
workspaceId: WorkspaceId;
|
|
57
|
+
}): Promise<WorkspaceCheckout>;
|
|
53
58
|
createWorktree(input: {
|
|
54
59
|
readonly workspaceId: WorkspaceId;
|
|
55
60
|
readonly branch: string;
|
|
56
61
|
readonly newBranch?: string;
|
|
62
|
+
readonly fromHead?: boolean;
|
|
63
|
+
readonly expectedHeadCommit?: string;
|
|
57
64
|
}): Promise<WorktreeRecord>;
|
|
58
65
|
createWorktreeAtCommit(input: {
|
|
59
66
|
workspaceId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
|
package/lib/manage/manager.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { randomBytes } from 'node:crypto';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { realpath } from 'node:fs/promises';
|
|
3
4
|
import { LocalGitAdapter } from '../provider/git/adapter.js';
|
|
4
5
|
import { WorkspaceShardedSidecarRepository } from '../provider/sidecar/repository.js';
|
|
5
6
|
import { WorktreeMutationTransaction } from '../provider/transaction/index.js';
|
|
6
7
|
import { providerError } from '../provider/types.js';
|
|
7
8
|
import { bindSession, listBindings, resolveRuntimeCwd, readSessionHead, } from './manager-sessions.js';
|
|
8
|
-
import { cleanWorktree, createWorktree, forgetWorktree, importWorktree, insertWorktreeBefore, listBranches, listImportCandidates, listWorktrees, removeWorktree, unarchiveWorktree, recoverWorktrees, } from './manager-worktrees.js';
|
|
9
|
+
import { cleanWorktree, createWorktree, forgetWorktree, importWorktree, insertWorktreeBefore, listBranches, getWorkspaceGitState, fetchRemoteBranches, listImportCandidates, listWorktrees, removeWorktree, unarchiveWorktree, recoverWorktrees, } from './manager-worktrees.js';
|
|
9
10
|
import { getWorktreeCommitFileDiff, listWorktreeCommitFiles, listWorktreeCommits, updateWorktreeBaseBranch, } from './manager-git-history.js';
|
|
10
|
-
import { requireWorkspace, requireWorkspaceForRead } from './manager-support.js';
|
|
11
|
+
import { requireWorkspace, requireWorkspaceForRead, requireWorkspaceRoot, samePhysicalPath } from './manager-support.js';
|
|
11
12
|
function isMainWorktreeId(worktreeId, workspaceId) {
|
|
12
13
|
// `main` is retained for legacy browser callers; the canonical synthetic ID is
|
|
13
14
|
// workspace-scoped so one Workspace cannot address another Workspace's Main shard.
|
|
@@ -150,6 +151,9 @@ export class WorktreeManagerImpl {
|
|
|
150
151
|
listWorktrees(input) {
|
|
151
152
|
return this.afterRecovery(() => listWorktrees(this.context, input));
|
|
152
153
|
}
|
|
154
|
+
getWorkspaceGitState(input) {
|
|
155
|
+
return this.afterRecovery(() => getWorkspaceGitState(this.context, input));
|
|
156
|
+
}
|
|
153
157
|
listWorktreeCommits(input) {
|
|
154
158
|
return this.afterRecovery(() => listWorktreeCommits(this.context, input));
|
|
155
159
|
}
|
|
@@ -165,8 +169,65 @@ export class WorktreeManagerImpl {
|
|
|
165
169
|
listBranches(input) {
|
|
166
170
|
return this.afterRecovery(() => listBranches(this.context, input));
|
|
167
171
|
}
|
|
172
|
+
fetchRemoteBranches(input) {
|
|
173
|
+
return this.afterRecovery(() => fetchRemoteBranches(this.context, input));
|
|
174
|
+
}
|
|
175
|
+
getWorkspaceCheckout(input) {
|
|
176
|
+
return this.afterRecovery(async () => {
|
|
177
|
+
const workspace = await requireWorkspaceForRead(this.context, input.workspaceId);
|
|
178
|
+
await requireWorkspaceRoot(workspace);
|
|
179
|
+
const options = { signal: this.context.signal };
|
|
180
|
+
await this.context.git.validateRepository(workspace.rootPath, options);
|
|
181
|
+
const gitRootPath = this.context.git.resolveRepositoryRoot
|
|
182
|
+
? await this.context.git.resolveRepositoryRoot(workspace.rootPath, options)
|
|
183
|
+
: workspace.rootPath;
|
|
184
|
+
const worktrees = await this.context.git.listWorktrees(gitRootPath, options);
|
|
185
|
+
const workspacePath = await realpath(workspace.rootPath);
|
|
186
|
+
for (const worktree of worktrees) {
|
|
187
|
+
if (await samePhysicalPath(worktree.absolutePath, gitRootPath)) {
|
|
188
|
+
let currentHead = worktree.currentHead;
|
|
189
|
+
try {
|
|
190
|
+
currentHead = this.context.git.resolveCheckoutHead
|
|
191
|
+
? await this.context.git.resolveCheckoutHead(gitRootPath, worktree, options)
|
|
192
|
+
: currentHead ?? (worktree.headCommit && worktree.branch && !worktree.detached
|
|
193
|
+
? { kind: 'branch', name: worktree.branch, commit: worktree.headCommit }
|
|
194
|
+
: undefined);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
currentHead = undefined;
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
gitRootPath,
|
|
201
|
+
workspacePath,
|
|
202
|
+
...(currentHead === undefined ? {} : { currentHead }),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return { gitRootPath, workspacePath };
|
|
207
|
+
});
|
|
208
|
+
}
|
|
168
209
|
createWorktree(input) {
|
|
169
|
-
return this.afterRecovery(() =>
|
|
210
|
+
return this.afterRecovery(async () => {
|
|
211
|
+
if (!input.fromHead)
|
|
212
|
+
return createWorktree(this.context, input);
|
|
213
|
+
if (!input.newBranch || !this.context.git.resolveCommit) {
|
|
214
|
+
throw providerError('GIT_OPERATION_FAILED', 'Creating from HEAD requires a new branch and commit resolution', {});
|
|
215
|
+
}
|
|
216
|
+
const workspace = await requireWorkspace(this.context, input.workspaceId);
|
|
217
|
+
await this.context.git.validateRepository(workspace.rootPath, { signal: this.context.signal });
|
|
218
|
+
const commit = await this.context.git.resolveCommit(workspace.rootPath, 'HEAD', { signal: this.context.signal });
|
|
219
|
+
if (input.expectedHeadCommit !== undefined && input.expectedHeadCommit !== commit) {
|
|
220
|
+
throw providerError('WORKTREE_STATE_CONFLICT', 'Workspace HEAD changed; refresh before creating a Worktree', {
|
|
221
|
+
workspaceId: input.workspaceId, expectedHeadCommit: input.expectedHeadCommit, headCommit: commit,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
return createWorktree(this.context, {
|
|
225
|
+
workspaceId: input.workspaceId,
|
|
226
|
+
branch: `${commit}^{commit}`,
|
|
227
|
+
baseCommit: commit,
|
|
228
|
+
newBranch: input.newBranch,
|
|
229
|
+
});
|
|
230
|
+
});
|
|
170
231
|
}
|
|
171
232
|
createWorktreeAtCommit(input) {
|
|
172
233
|
return this.afterRecovery(() => createWorktree(this.context, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/manage/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GitCommitHistoryRead, GitChangedFileRead, GitCommandOptions, GitBranchWorktreeInfo, GitSubprocessRuntime, GitWorktreeAdapter, GitWorktreeInfo } from '../types.js';
|
|
1
|
+
import type { GitCommitHistoryRead, GitChangedFileRead, GitCommandOptions, GitHistoryOptions, GitBranchWorktreeInfo, GitSubprocessRuntime, GitWorktreeAdapter, GitWorktreeInfo } from '../types.js';
|
|
2
2
|
import type { WorktreeGitFileDiff } from '../../contract/index.js';
|
|
3
3
|
export interface LocalGitAdapterOptions extends GitCommandOptions {
|
|
4
4
|
readonly executable?: string;
|
|
@@ -13,11 +13,10 @@ export interface LocalGitAdapterOptions extends GitCommandOptions {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* 本地 Git worktree adapter:所有命令都以 DSH Workspace 根目录为 cwd,并仅使用固定的
|
|
16
|
-
*
|
|
16
|
+
* 子命令;只有显式 fetchRemoteBranches 会访问已配置的 remote。
|
|
17
17
|
*
|
|
18
18
|
* Local Git worktree adapter: every command runs with the DSH Workspace root as
|
|
19
|
-
* cwd and uses
|
|
20
|
-
* remotes.
|
|
19
|
+
* cwd and uses fixed subcommands. Only explicit fetchRemoteBranches contacts remotes.
|
|
21
20
|
*/
|
|
22
21
|
export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
23
22
|
private readonly executable;
|
|
@@ -28,6 +27,7 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
|
28
27
|
private readonly maxOutputBytes;
|
|
29
28
|
private readonly defaultSignal?;
|
|
30
29
|
private readonly subprocess?;
|
|
30
|
+
private readonly fetches;
|
|
31
31
|
constructor(options?: LocalGitAdapterOptions);
|
|
32
32
|
private run;
|
|
33
33
|
/**
|
|
@@ -55,8 +55,10 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
|
55
55
|
readonly ahead: number;
|
|
56
56
|
readonly behind: number;
|
|
57
57
|
}>;
|
|
58
|
-
/** Read
|
|
59
|
-
listCommits(worktreeRoot: string, baseCommit?: string, options?:
|
|
58
|
+
/** Read one bounded page using a pinned HEAD for the entire log invocation. */
|
|
59
|
+
listCommits(worktreeRoot: string, baseCommit?: string, options?: GitHistoryOptions): Promise<GitCommitHistoryRead>;
|
|
60
|
+
containsCommit(worktreeRoot: string, commit: string, headCommit: string, baseCommit?: string, options?: GitCommandOptions): Promise<boolean>;
|
|
61
|
+
containsCommits(worktreeRoot: string, commits: readonly string[], headCommit: string, baseCommit?: string, options?: GitCommandOptions): Promise<boolean>;
|
|
60
62
|
private isTrackedWorkingTreeFile;
|
|
61
63
|
private isPresentInCommit;
|
|
62
64
|
private isPresentOnDisk;
|
|
@@ -98,14 +100,12 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
|
98
100
|
readDiffFileDiff(worktreeRoot: string, baseCommit: string, targetCommit: string, filePath: string, options?: GitCommandOptions): Promise<WorktreeGitFileDiff>;
|
|
99
101
|
/** Read one authorized file patch with external diff and textconv disabled. */
|
|
100
102
|
readCommitFileDiff(worktreeRoot: string, commit: string, filePath: string, options?: GitCommandOptions): Promise<WorktreeGitFileDiff>;
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
* depending on human-facing formatting or whitespace tokenization.
|
|
105
|
-
*/
|
|
103
|
+
/** Fetch branch heads into remote-tracking refs, ignoring configured local/tag refspecs. */
|
|
104
|
+
fetchRemoteBranches(workspaceRoot: string, options?: GitCommandOptions): Promise<void>;
|
|
105
|
+
/** Lists local and fetched remote refs using NUL delimiters. */
|
|
106
106
|
listBranches(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly string[]>;
|
|
107
107
|
/**
|
|
108
|
-
* Read local branches and
|
|
108
|
+
* Read local/fetched remote branches and local checkout paths in one invocation when the
|
|
109
109
|
* installed Git supports the `worktreepath` format atom.
|
|
110
110
|
*/
|
|
111
111
|
listBranchesWithWorktreePaths(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly GitBranchWorktreeInfo[]>;
|
|
@@ -115,6 +115,7 @@ export declare class LocalGitAdapter implements GitWorktreeAdapter {
|
|
|
115
115
|
* not map to a local branch are not discarded.
|
|
116
116
|
*/
|
|
117
117
|
listWorktrees(workspaceRoot: string, options?: GitCommandOptions): Promise<readonly GitWorktreeInfo[]>;
|
|
118
|
+
resolveCheckoutHead(workspaceRoot: string, worktree: GitWorktreeInfo, options?: GitCommandOptions): Promise<import('../../contract/index.js').GitCheckoutHead | undefined>;
|
|
118
119
|
/**
|
|
119
120
|
* 执行 `git worktree add`;传入 newBranch 时使用 `-b` 从 base branch 创建本地分支。
|
|
120
121
|
* Executes `git worktree add`; when newBranch is supplied, `-b` creates a local
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/provider/git/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/provider/git/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { lstat, mkdtemp, realpath, rm, writeFile } from 'node:fs/promises';
|
|
2
2
|
import os from 'node:os';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { isSafeBranchName } from './branch-name.js';
|
|
4
5
|
import { GitCommandError, runGit, } from './subprocess.js';
|
|
5
6
|
import { WorktreeProviderError, providerError } from '../types.js';
|
|
6
7
|
import { WORKTREE_GIT_COMMIT_PATTERN, WORKTREE_GIT_WORKING_TREE } from '../../contract/index.js';
|
|
7
8
|
/** Shared with Contract/Manage/Client so commit-SHA validation cannot drift. */
|
|
8
9
|
const COMMIT_PATTERN = WORKTREE_GIT_COMMIT_PATTERN;
|
|
9
|
-
const
|
|
10
|
-
const HISTORY_VISIBLE_LIMIT = 200;
|
|
10
|
+
const HISTORY_VISIBLE_LIMIT = 50;
|
|
11
11
|
/**
|
|
12
12
|
* Line statistics for untracked files cost one `git diff --no-index` process per
|
|
13
13
|
* file. A large untracked tree therefore reports unknown counts beyond this
|
|
@@ -414,18 +414,28 @@ function parseWorktrees(output) {
|
|
|
414
414
|
flush();
|
|
415
415
|
return worktrees;
|
|
416
416
|
}
|
|
417
|
-
/** Parse
|
|
417
|
+
/** Parse exact refs, symrefs and optional checkout paths; tags never affect branch names. */
|
|
418
418
|
function parseBranchWorktreePaths(output) {
|
|
419
419
|
const fields = output.split('\0');
|
|
420
420
|
const branches = [];
|
|
421
|
-
for (let index = 0; index +
|
|
422
|
-
const
|
|
423
|
-
const
|
|
421
|
+
for (let index = 0; index + 3 < fields.length; index += 4) {
|
|
422
|
+
const ref = (fields[index] ?? '').replace(/^\r?\n/u, '');
|
|
423
|
+
const symref = fields[index + 2] ?? '';
|
|
424
|
+
const worktreePath = fields[index + 3] ?? '';
|
|
425
|
+
const kind = ref.startsWith('refs/heads/') ? 'local'
|
|
426
|
+
: ref.startsWith('refs/remotes/') ? 'remote' : undefined;
|
|
427
|
+
if (kind === undefined || symref || (kind === 'remote' && ref.endsWith('/HEAD')))
|
|
428
|
+
continue;
|
|
429
|
+
const name = ref.slice(kind === 'local' ? 'refs/heads/'.length : 'refs/remotes/'.length);
|
|
424
430
|
if (!name)
|
|
425
431
|
continue;
|
|
432
|
+
const remote = kind === 'remote' ? ref.slice('refs/remotes/'.length).split('/')[0] : undefined;
|
|
426
433
|
branches.push({
|
|
427
434
|
name,
|
|
428
|
-
|
|
435
|
+
ref,
|
|
436
|
+
kind,
|
|
437
|
+
...(remote ? { remote } : {}),
|
|
438
|
+
...(kind === 'local' && worktreePath ? { worktreePath } : {}),
|
|
429
439
|
});
|
|
430
440
|
}
|
|
431
441
|
return branches;
|
|
@@ -435,11 +445,10 @@ function isUnsupportedWorktreePathAtom(error) {
|
|
|
435
445
|
}
|
|
436
446
|
/**
|
|
437
447
|
* 本地 Git worktree adapter:所有命令都以 DSH Workspace 根目录为 cwd,并仅使用固定的
|
|
438
|
-
*
|
|
448
|
+
* 子命令;只有显式 fetchRemoteBranches 会访问已配置的 remote。
|
|
439
449
|
*
|
|
440
450
|
* Local Git worktree adapter: every command runs with the DSH Workspace root as
|
|
441
|
-
* cwd and uses
|
|
442
|
-
* remotes.
|
|
451
|
+
* cwd and uses fixed subcommands. Only explicit fetchRemoteBranches contacts remotes.
|
|
443
452
|
*/
|
|
444
453
|
export class LocalGitAdapter {
|
|
445
454
|
executable;
|
|
@@ -450,6 +459,7 @@ export class LocalGitAdapter {
|
|
|
450
459
|
maxOutputBytes;
|
|
451
460
|
defaultSignal;
|
|
452
461
|
subprocess;
|
|
462
|
+
fetches = new Map();
|
|
453
463
|
constructor(options = {}) {
|
|
454
464
|
this.executable = options.executable ?? 'git';
|
|
455
465
|
this.executableArgs = options.executableArgs ?? [];
|
|
@@ -643,19 +653,24 @@ export class LocalGitAdapter {
|
|
|
643
653
|
throw operationError('count commit divergence', worktreeRoot, undefined, headCommit, error);
|
|
644
654
|
}
|
|
645
655
|
}
|
|
646
|
-
/** Read
|
|
656
|
+
/** Read one bounded page using a pinned HEAD for the entire log invocation. */
|
|
647
657
|
async listCommits(worktreeRoot, baseCommit, options = {}) {
|
|
648
658
|
if (baseCommit !== undefined)
|
|
649
659
|
assertCommitArgument(baseCommit, 'list commits', worktreeRoot);
|
|
660
|
+
const offset = options.offset ?? 0;
|
|
661
|
+
if (!Number.isSafeInteger(offset) || offset < 0) {
|
|
662
|
+
throw providerError('WORKTREE_STATE_CONFLICT', 'Invalid history offset', { offset });
|
|
663
|
+
}
|
|
650
664
|
const headCommit = await this.resolveCommit(worktreeRoot, 'HEAD', options);
|
|
651
665
|
try {
|
|
652
666
|
const result = await this.run([
|
|
653
667
|
'log',
|
|
654
668
|
'--no-color',
|
|
655
669
|
'--topo-order',
|
|
656
|
-
`--max-count=${
|
|
670
|
+
`--max-count=${HISTORY_VISIBLE_LIMIT + 1}`,
|
|
671
|
+
`--skip=${offset}`,
|
|
657
672
|
'--format=%H%x00%P%x00%s%x00%an%x00%ae%x00%aI%x1e',
|
|
658
|
-
|
|
673
|
+
baseCommit === undefined ? headCommit : `${baseCommit}..${headCommit}`,
|
|
659
674
|
], worktreeRoot, options);
|
|
660
675
|
const commits = result.stdout
|
|
661
676
|
.split('\x1e')
|
|
@@ -666,6 +681,7 @@ export class LocalGitAdapter {
|
|
|
666
681
|
headCommit,
|
|
667
682
|
commits: commits.slice(0, HISTORY_VISIBLE_LIMIT),
|
|
668
683
|
truncated: commits.length > HISTORY_VISIBLE_LIMIT,
|
|
684
|
+
...(commits.length > HISTORY_VISIBLE_LIMIT ? { nextOffset: offset + HISTORY_VISIBLE_LIMIT } : {}),
|
|
669
685
|
};
|
|
670
686
|
}
|
|
671
687
|
catch (error) {
|
|
@@ -674,6 +690,62 @@ export class LocalGitAdapter {
|
|
|
674
690
|
throw operationError('list commits', worktreeRoot, undefined, baseCommit, error);
|
|
675
691
|
}
|
|
676
692
|
}
|
|
693
|
+
async containsCommit(worktreeRoot, commit, headCommit, baseCommit, options = {}) {
|
|
694
|
+
assertCommitArgument(commit, 'authorize commit', worktreeRoot);
|
|
695
|
+
assertCommitArgument(headCommit, 'authorize commit', worktreeRoot);
|
|
696
|
+
if (baseCommit !== undefined)
|
|
697
|
+
assertCommitArgument(baseCommit, 'authorize commit', worktreeRoot);
|
|
698
|
+
try {
|
|
699
|
+
await this.run(['rev-parse', '--verify', '--quiet', `${commit}^{commit}`], worktreeRoot, options);
|
|
700
|
+
}
|
|
701
|
+
catch (error) {
|
|
702
|
+
if (error instanceof GitCommandError && error.exitCode === 1 &&
|
|
703
|
+
!error.timedOut && !error.aborted && !error.outputTruncated)
|
|
704
|
+
return false;
|
|
705
|
+
throw operationError('authorize commit', worktreeRoot, undefined, commit, error);
|
|
706
|
+
}
|
|
707
|
+
const isAncestor = async (head) => {
|
|
708
|
+
try {
|
|
709
|
+
await this.run(['merge-base', '--is-ancestor', commit, head], worktreeRoot, options);
|
|
710
|
+
return true;
|
|
711
|
+
}
|
|
712
|
+
catch (error) {
|
|
713
|
+
if (error instanceof GitCommandError && error.exitCode === 1 &&
|
|
714
|
+
!error.timedOut && !error.aborted && !error.outputTruncated)
|
|
715
|
+
return false;
|
|
716
|
+
throw operationError('authorize commit', worktreeRoot, undefined, commit, error);
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
return await isAncestor(headCommit) && (baseCommit === undefined || !await isAncestor(baseCommit));
|
|
720
|
+
}
|
|
721
|
+
async containsCommits(worktreeRoot, commits, headCommit, baseCommit, options = {}) {
|
|
722
|
+
for (const commit of commits)
|
|
723
|
+
assertCommitArgument(commit, 'authorize commits', worktreeRoot);
|
|
724
|
+
assertCommitArgument(headCommit, 'authorize commits', worktreeRoot);
|
|
725
|
+
if (baseCommit !== undefined)
|
|
726
|
+
assertCommitArgument(baseCommit, 'authorize commits', worktreeRoot);
|
|
727
|
+
if (commits.length < 8) {
|
|
728
|
+
for (const commit of commits) {
|
|
729
|
+
if (!await this.containsCommit(worktreeRoot, commit, headCommit, baseCommit, options))
|
|
730
|
+
return false;
|
|
731
|
+
}
|
|
732
|
+
return true;
|
|
733
|
+
}
|
|
734
|
+
try {
|
|
735
|
+
// Large selections share one traversal. The runner's output bound fails
|
|
736
|
+
// closed on oversized histories; a partial membership set is never trusted.
|
|
737
|
+
const result = await this.run(['rev-list', headCommit, ...(baseCommit === undefined ? [] : [`^${baseCommit}`]), '--'], worktreeRoot, options);
|
|
738
|
+
const members = new Set(result.stdout.trim().split(/\s+/u).filter(Boolean));
|
|
739
|
+
for (const member of members)
|
|
740
|
+
assertCommitArgument(member, 'authorize commits', worktreeRoot);
|
|
741
|
+
return commits.every((commit) => members.has(commit));
|
|
742
|
+
}
|
|
743
|
+
catch (error) {
|
|
744
|
+
if (error instanceof WorktreeProviderError)
|
|
745
|
+
throw error;
|
|
746
|
+
throw operationError('authorize commits', worktreeRoot, undefined, headCommit, error);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
677
749
|
async isTrackedWorkingTreeFile(worktreeRoot, filePath, options) {
|
|
678
750
|
try {
|
|
679
751
|
await this.run(['ls-files', '--error-unmatch', '--', filePath], worktreeRoot, options);
|
|
@@ -1117,30 +1189,57 @@ export class LocalGitAdapter {
|
|
|
1117
1189
|
];
|
|
1118
1190
|
return shapeFileDiff(() => this.run(args, worktreeRoot, options), { commit, path: filePath, operation, worktreeRoot, detail: commit });
|
|
1119
1191
|
}
|
|
1120
|
-
/**
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1192
|
+
/** Fetch branch heads into remote-tracking refs, ignoring configured local/tag refspecs. */
|
|
1193
|
+
async fetchRemoteBranches(workspaceRoot, options = {}) {
|
|
1194
|
+
const existing = this.fetches.get(workspaceRoot);
|
|
1195
|
+
if (existing)
|
|
1196
|
+
return existing;
|
|
1197
|
+
const task = (async () => {
|
|
1198
|
+
try {
|
|
1199
|
+
const result = await this.run(['remote'], workspaceRoot, options);
|
|
1200
|
+
const remotes = result.stdout.split(/\r?\n/u).filter(Boolean);
|
|
1201
|
+
for (const remote of remotes) {
|
|
1202
|
+
if (!isSafeBranchName(remote))
|
|
1203
|
+
throw providerError('GIT_OPERATION_FAILED', 'Invalid configured Git remote name', { operation: 'fetch remote branches' });
|
|
1204
|
+
}
|
|
1205
|
+
for (const remote of remotes) {
|
|
1206
|
+
await this.run([
|
|
1207
|
+
'-c', 'core.hooksPath=' + GIT_NULL_DEVICE,
|
|
1208
|
+
'fetch', '--refmap=', '--no-tags', '--no-prune', '--no-recurse-submodules', '--no-auto-gc',
|
|
1209
|
+
'--', remote, '+refs/heads/*:refs/remotes/' + remote + '/*',
|
|
1210
|
+
], workspaceRoot, options, false);
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
catch (error) {
|
|
1214
|
+
throw operationError('fetch remote branches', workspaceRoot, undefined, undefined, error);
|
|
1215
|
+
}
|
|
1216
|
+
})();
|
|
1217
|
+
this.fetches.set(workspaceRoot, task);
|
|
1218
|
+
try {
|
|
1219
|
+
await task;
|
|
1220
|
+
}
|
|
1221
|
+
finally {
|
|
1222
|
+
if (this.fetches.get(workspaceRoot) === task)
|
|
1223
|
+
this.fetches.delete(workspaceRoot);
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
/** Lists local and fetched remote refs using NUL delimiters. */
|
|
1125
1227
|
async listBranches(workspaceRoot, options = {}) {
|
|
1126
1228
|
try {
|
|
1127
|
-
const result = await this.run(['for-each-ref', '--format=%(refname:short)%00', 'refs/heads/'], workspaceRoot, options);
|
|
1128
|
-
return result.stdout
|
|
1129
|
-
.split('\0')
|
|
1130
|
-
.map((branch) => branch.replace(/^\r?\n/, '').replace(/\r?\n$/, ''))
|
|
1131
|
-
.filter((branch) => branch.length > 0);
|
|
1229
|
+
const result = await this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options);
|
|
1230
|
+
return parseBranchWorktreePaths(result.stdout).map((branch) => branch.name);
|
|
1132
1231
|
}
|
|
1133
1232
|
catch (error) {
|
|
1134
1233
|
throw operationError('list branches', workspaceRoot, undefined, undefined, error);
|
|
1135
1234
|
}
|
|
1136
1235
|
}
|
|
1137
1236
|
/**
|
|
1138
|
-
* Read local branches and
|
|
1237
|
+
* Read local/fetched remote branches and local checkout paths in one invocation when the
|
|
1139
1238
|
* installed Git supports the `worktreepath` format atom.
|
|
1140
1239
|
*/
|
|
1141
1240
|
async listBranchesWithWorktreePaths(workspaceRoot, options = {}) {
|
|
1142
1241
|
try {
|
|
1143
|
-
const result = await this.run(['for-each-ref', '--format=%(refname:short)%00%(worktreepath)%00', 'refs/heads/'], workspaceRoot, options);
|
|
1242
|
+
const result = await this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%(worktreepath)%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options);
|
|
1144
1243
|
return parseBranchWorktreePaths(result.stdout);
|
|
1145
1244
|
}
|
|
1146
1245
|
catch (error) {
|
|
@@ -1148,15 +1247,17 @@ export class LocalGitAdapter {
|
|
|
1148
1247
|
throw operationError('list branches', workspaceRoot, undefined, undefined, error);
|
|
1149
1248
|
}
|
|
1150
1249
|
const [branches, worktrees] = await Promise.all([
|
|
1151
|
-
this.
|
|
1250
|
+
this.run(['for-each-ref', '--format=%(refname)%00%(refname:short)%00%(symref)%00%00', 'refs/heads/', 'refs/remotes/'], workspaceRoot, options).then((result) => parseBranchWorktreePaths(result.stdout))
|
|
1251
|
+
.catch((cause) => { throw operationError('list branches', workspaceRoot, undefined, undefined, cause); }),
|
|
1152
1252
|
this.listWorktrees(workspaceRoot, options),
|
|
1153
1253
|
]);
|
|
1154
1254
|
const worktreePathByBranch = new Map(worktrees.flatMap((worktree) => worktree.branch
|
|
1155
1255
|
? [[worktree.branch, worktree.absolutePath]]
|
|
1156
1256
|
: []));
|
|
1157
|
-
return branches.map((
|
|
1158
|
-
|
|
1159
|
-
...(
|
|
1257
|
+
return branches.map((branch) => ({
|
|
1258
|
+
...branch,
|
|
1259
|
+
...(branch.kind !== 'remote' && worktreePathByBranch.has(branch.ref?.slice('refs/heads/'.length) ?? branch.name)
|
|
1260
|
+
? { worktreePath: worktreePathByBranch.get(branch.ref?.slice('refs/heads/'.length) ?? branch.name) } : {}),
|
|
1160
1261
|
}));
|
|
1161
1262
|
}
|
|
1162
1263
|
}
|
|
@@ -1174,6 +1275,28 @@ export class LocalGitAdapter {
|
|
|
1174
1275
|
throw operationError('list worktrees', workspaceRoot, undefined, undefined, error);
|
|
1175
1276
|
}
|
|
1176
1277
|
}
|
|
1278
|
+
async resolveCheckoutHead(workspaceRoot, worktree, options = {}) {
|
|
1279
|
+
const commit = worktree.headCommit;
|
|
1280
|
+
if (worktree.prunable || worktree.bare || !commit || !COMMIT_PATTERN.test(commit) || /^0+$/u.test(commit))
|
|
1281
|
+
return undefined;
|
|
1282
|
+
if (worktree.branch && !worktree.detached)
|
|
1283
|
+
return { kind: 'branch', name: worktree.branch, commit };
|
|
1284
|
+
try {
|
|
1285
|
+
// Only the captured object in the known repository is inspected.
|
|
1286
|
+
const tag = (await this.run(['describe', '--tags', '--exact-match', commit], workspaceRoot, options)).stdout.trim();
|
|
1287
|
+
return tag ? { kind: 'tag', name: tag, commit } : { kind: 'commit', name: commit.slice(0, 7), commit };
|
|
1288
|
+
}
|
|
1289
|
+
catch (error) {
|
|
1290
|
+
// No exact tag is an ordinary detached commit. All other display failures
|
|
1291
|
+
// omit the label without breaking registration or readiness reads.
|
|
1292
|
+
if (error instanceof GitCommandError && error.exitCode === 128 &&
|
|
1293
|
+
!error.aborted && !error.timedOut && !error.outputTruncated && !error.processTreeDidNotExit &&
|
|
1294
|
+
/no tag|cannot describe|no names found/iu.test(error.stderr)) {
|
|
1295
|
+
return { kind: 'commit', name: commit.slice(0, 7), commit };
|
|
1296
|
+
}
|
|
1297
|
+
return undefined;
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1177
1300
|
/**
|
|
1178
1301
|
* 执行 `git worktree add`;传入 newBranch 时使用 `-b` 从 base branch 创建本地分支。
|
|
1179
1302
|
* Executes `git worktree add`; when newBranch is supplied, `-b` creates a local
|