sync-worktrees 3.6.3 → 4.1.0
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 +383 -261
- package/dist/components/App.d.ts +50 -0
- package/dist/components/App.d.ts.map +1 -0
- package/dist/components/BranchCreationWizard.d.ts +26 -0
- package/dist/components/BranchCreationWizard.d.ts.map +1 -0
- package/dist/components/HelpModal.d.ts +7 -0
- package/dist/components/HelpModal.d.ts.map +1 -0
- package/dist/components/LogPanel.d.ts +10 -0
- package/dist/components/LogPanel.d.ts.map +1 -0
- package/dist/components/LogViewer.d.ts +9 -0
- package/dist/components/LogViewer.d.ts.map +1 -0
- package/dist/components/OpenEditorWizard.d.ts +25 -0
- package/dist/components/OpenEditorWizard.d.ts.map +1 -0
- package/dist/components/StatusBar.d.ts +14 -0
- package/dist/components/StatusBar.d.ts.map +1 -0
- package/dist/components/WorktreeStatusView.d.ts +14 -0
- package/dist/components/WorktreeStatusView.d.ts.map +1 -0
- package/dist/constants.d.ts +112 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/errors/index.d.ts +59 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2523 -1106
- package/dist/index.js.map +4 -4
- package/dist/mcp/context.d.ts +143 -0
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/handlers.d.ts +46 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/utils.d.ts +14 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/worktree-summary.d.ts +14 -0
- package/dist/mcp/worktree-summary.d.ts.map +1 -0
- package/dist/mcp-server.js +2347 -640
- package/dist/mcp-server.js.map +4 -4
- package/dist/services/InteractiveUIService.d.ts +85 -0
- package/dist/services/InteractiveUIService.d.ts.map +1 -0
- package/dist/services/branch-created-actions.service.d.ts +27 -0
- package/dist/services/branch-created-actions.service.d.ts.map +1 -0
- package/dist/services/clone-sync.service.d.ts +93 -0
- package/dist/services/clone-sync.service.d.ts.map +1 -0
- package/dist/services/config-loader.service.d.ts +28 -0
- package/dist/services/config-loader.service.d.ts.map +1 -0
- package/dist/services/file-copy.service.d.ts +19 -0
- package/dist/services/file-copy.service.d.ts.map +1 -0
- package/dist/services/git.service.d.ts +94 -0
- package/dist/services/git.service.d.ts.map +1 -0
- package/dist/services/hook-execution.service.d.ts +20 -0
- package/dist/services/hook-execution.service.d.ts.map +1 -0
- package/dist/services/logger.service.d.ts +24 -0
- package/dist/services/logger.service.d.ts.map +1 -0
- package/dist/services/path-resolution.service.d.ts +10 -0
- package/dist/services/path-resolution.service.d.ts.map +1 -0
- package/dist/services/progress-emitter.d.ts +14 -0
- package/dist/services/progress-emitter.d.ts.map +1 -0
- package/dist/services/repo-operation-lock.d.ts +16 -0
- package/dist/services/repo-operation-lock.d.ts.map +1 -0
- package/dist/services/sparse-checkout.service.d.ts +45 -0
- package/dist/services/sparse-checkout.service.d.ts.map +1 -0
- package/dist/services/sync-outcome.d.ts +47 -0
- package/dist/services/sync-outcome.d.ts.map +1 -0
- package/dist/services/sync-retry-policy.d.ts +18 -0
- package/dist/services/sync-retry-policy.d.ts.map +1 -0
- package/dist/services/worktree-metadata.service.d.ts +25 -0
- package/dist/services/worktree-metadata.service.d.ts.map +1 -0
- package/dist/services/worktree-mode-sync-runner.d.ts +36 -0
- package/dist/services/worktree-mode-sync-runner.d.ts.map +1 -0
- package/dist/services/worktree-status.service.d.ts +60 -0
- package/dist/services/worktree-status.service.d.ts.map +1 -0
- package/dist/services/worktree-sync-planner.d.ts +62 -0
- package/dist/services/worktree-sync-planner.d.ts.map +1 -0
- package/dist/services/worktree-sync.service.d.ts +49 -0
- package/dist/services/worktree-sync.service.d.ts.map +1 -0
- package/dist/types/index.d.ts +303 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/sync-metadata.d.ts +16 -0
- package/dist/types/sync-metadata.d.ts.map +1 -0
- package/dist/utils/app-events.d.ts +31 -0
- package/dist/utils/app-events.d.ts.map +1 -0
- package/dist/utils/branch-filter.d.ts +3 -0
- package/dist/utils/branch-filter.d.ts.map +1 -0
- package/dist/utils/cli.d.ts +21 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/clone-skip-format.d.ts +3 -0
- package/dist/utils/clone-skip-format.d.ts.map +1 -0
- package/dist/utils/config-generator.d.ts +10 -0
- package/dist/utils/config-generator.d.ts.map +1 -0
- package/dist/utils/date-filter.d.ts +10 -0
- package/dist/utils/date-filter.d.ts.map +1 -0
- package/dist/utils/disk-space.d.ts +23 -0
- package/dist/utils/disk-space.d.ts.map +1 -0
- package/dist/utils/file-exists.d.ts +2 -0
- package/dist/utils/file-exists.d.ts.map +1 -0
- package/dist/utils/git-progress.d.ts +25 -0
- package/dist/utils/git-progress.d.ts.map +1 -0
- package/dist/utils/git-url.d.ts +23 -0
- package/dist/utils/git-url.d.ts.map +1 -0
- package/dist/utils/git-validation.d.ts +5 -0
- package/dist/utils/git-validation.d.ts.map +1 -0
- package/dist/utils/interactive.d.ts +3 -0
- package/dist/utils/interactive.d.ts.map +1 -0
- package/dist/utils/lfs-error.d.ts +35 -0
- package/dist/utils/lfs-error.d.ts.map +1 -0
- package/dist/utils/lock-path.d.ts +9 -0
- package/dist/utils/lock-path.d.ts.map +1 -0
- package/dist/utils/path-compare.d.ts +16 -0
- package/dist/utils/path-compare.d.ts.map +1 -0
- package/dist/utils/repo-mode.d.ts +8 -0
- package/dist/utils/repo-mode.d.ts.map +1 -0
- package/dist/utils/retry.d.ts +24 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/sanitize-name.d.ts +2 -0
- package/dist/utils/sanitize-name.d.ts.map +1 -0
- package/dist/utils/shell-escape.d.ts +5 -0
- package/dist/utils/shell-escape.d.ts.map +1 -0
- package/dist/utils/signal-handlers.d.ts +14 -0
- package/dist/utils/signal-handlers.d.ts.map +1 -0
- package/dist/utils/timing.d.ts +24 -0
- package/dist/utils/timing.d.ts.map +1 -0
- package/dist/utils/worktree-list-parser.d.ts +10 -0
- package/dist/utils/worktree-list-parser.d.ts.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Logger } from "./logger.service";
|
|
2
|
+
import type { SyncMetadata } from "../types/sync-metadata";
|
|
3
|
+
export declare class WorktreeMetadataService {
|
|
4
|
+
private logger;
|
|
5
|
+
constructor(logger?: Logger);
|
|
6
|
+
/**
|
|
7
|
+
* Gets the internal worktree directory name from a worktree path.
|
|
8
|
+
* Git uses the basename of the worktree path as the internal directory name.
|
|
9
|
+
* For example: /worktrees/fix/test-branch -> test-branch (not fix/test-branch)
|
|
10
|
+
*/
|
|
11
|
+
private getWorktreeDirectoryName;
|
|
12
|
+
getMetadataPath(bareRepoPath: string, worktreeName: string): Promise<string>;
|
|
13
|
+
getMetadataPathFromWorktreePath(bareRepoPath: string, worktreePath: string): Promise<string>;
|
|
14
|
+
saveMetadata(bareRepoPath: string, worktreeName: string, metadata: SyncMetadata): Promise<void>;
|
|
15
|
+
loadMetadata(bareRepoPath: string, worktreeName: string): Promise<SyncMetadata | null>;
|
|
16
|
+
loadMetadataFromPath(bareRepoPath: string, worktreePath: string): Promise<SyncMetadata | null>;
|
|
17
|
+
deleteMetadata(bareRepoPath: string, worktreeName: string): Promise<void>;
|
|
18
|
+
deleteMetadataFromPath(bareRepoPath: string, worktreePath: string): Promise<void>;
|
|
19
|
+
updateLastSync(bareRepoPath: string, worktreeName: string, commit: string, action?: "created" | "updated" | "fetched"): Promise<void>;
|
|
20
|
+
updateLastSyncFromPath(bareRepoPath: string, worktreePath: string, commit: string, action?: "created" | "updated" | "fetched", defaultBranch?: string): Promise<void>;
|
|
21
|
+
createInitialMetadata(bareRepoPath: string, worktreeName: string, commit: string, upstreamBranch: string, parentBranch: string, parentCommit: string): Promise<void>;
|
|
22
|
+
createInitialMetadataFromPath(bareRepoPath: string, worktreePath: string, commit: string, upstreamBranch: string, parentBranch: string, parentCommit: string): Promise<void>;
|
|
23
|
+
validateMetadata(metadata: SyncMetadata): Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=worktree-metadata.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-metadata.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-metadata.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,CAAC,EAAE,MAAM;IAI3B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAI1B,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc5E,+BAA+B,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM5F,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B/F,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYtF,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkB9F,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazE,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAajF,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,GACpD,OAAO,CAAC,IAAI,CAAC;IA0BV,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,GAAG,SAAS,GAAG,SAAqB,EACrD,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAqEV,qBAAqB,CACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAqBV,6BAA6B,CACjC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;IAsBV,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;CAejE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { GitService } from "./git.service";
|
|
2
|
+
import type { Logger } from "./logger.service";
|
|
3
|
+
import type { ProgressEmitter } from "./progress-emitter";
|
|
4
|
+
import type { SyncOutcomeAccumulator } from "./sync-outcome";
|
|
5
|
+
import type { SyncRetryContext } from "./sync-retry-policy";
|
|
6
|
+
import type { Config } from "../types";
|
|
7
|
+
import type { PhaseTimer } from "../utils/timing";
|
|
8
|
+
export declare class WorktreeModeSyncRunner {
|
|
9
|
+
private config;
|
|
10
|
+
private gitService;
|
|
11
|
+
private logger;
|
|
12
|
+
private progressEmitter;
|
|
13
|
+
private pathResolution;
|
|
14
|
+
constructor(config: Config, gitService: GitService, logger: Logger, progressEmitter: ProgressEmitter);
|
|
15
|
+
updateLogger(logger: Logger): void;
|
|
16
|
+
runSyncAttempt(phaseTimer: PhaseTimer, syncContext: SyncRetryContext, outcome: SyncOutcomeAccumulator): Promise<void>;
|
|
17
|
+
private reapplySparseCheckout;
|
|
18
|
+
private fetchLatestRemoteData;
|
|
19
|
+
private resolveSyncBranches;
|
|
20
|
+
private getRemoteBranchesFilteredByActivity;
|
|
21
|
+
private getRemoteBranchesFilteredByName;
|
|
22
|
+
private finalizeSyncAttempt;
|
|
23
|
+
private createNewWorktreesWithTiming;
|
|
24
|
+
private createNewWorktrees;
|
|
25
|
+
private pruneOldWorktreesWithTiming;
|
|
26
|
+
private pruneOldWorktrees;
|
|
27
|
+
private logDebugDetails;
|
|
28
|
+
private fetchBranchByBranch;
|
|
29
|
+
private updateExistingWorktreesWithTiming;
|
|
30
|
+
private updateExistingWorktrees;
|
|
31
|
+
private cleanupOrphanedDirectories;
|
|
32
|
+
private handleDivergedBranch;
|
|
33
|
+
private hasLocalChangesSinceLastSync;
|
|
34
|
+
private divergeWorktree;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=worktree-mode-sync-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-mode-sync-runner.d.ts","sourceRoot":"","sources":["../../src/services/worktree-mode-sync-runner.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IANzB,OAAO,CAAC,cAAc,CAA+B;gBAG3C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe;IAG1C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI5B,cAAc,CAClB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC;YAwCF,qBAAqB;YA2DrB,qBAAqB;YAwBrB,mBAAmB;YAcnB,mCAAmC;YAiCnC,+BAA+B;YAa/B,mBAAmB;YAQnB,4BAA4B;YAgB5B,kBAAkB;YAyDlB,2BAA2B;YAe3B,iBAAiB;IAsH/B,OAAO,CAAC,eAAe;YA4CT,mBAAmB;YAwCnB,iCAAiC;YAgBjC,uBAAuB;YAkMvB,0BAA0B;YAwC1B,oBAAoB;YA0CpB,4BAA4B;YAc5B,eAAe;CA4C9B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Logger } from "./logger.service";
|
|
2
|
+
export interface WorktreeStatusDetails {
|
|
3
|
+
modifiedFiles: number;
|
|
4
|
+
deletedFiles: number;
|
|
5
|
+
renamedFiles: number;
|
|
6
|
+
createdFiles: number;
|
|
7
|
+
conflictedFiles: number;
|
|
8
|
+
untrackedFiles: number;
|
|
9
|
+
unpushedCommitCount?: number;
|
|
10
|
+
stashCount?: number;
|
|
11
|
+
operationType?: string;
|
|
12
|
+
modifiedSubmodules?: string[];
|
|
13
|
+
modifiedFilesList?: string[];
|
|
14
|
+
deletedFilesList?: string[];
|
|
15
|
+
renamedFilesList?: Array<{
|
|
16
|
+
from: string;
|
|
17
|
+
to: string;
|
|
18
|
+
}>;
|
|
19
|
+
createdFilesList?: string[];
|
|
20
|
+
conflictedFilesList?: string[];
|
|
21
|
+
untrackedFilesList?: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface WorktreeStatusResult {
|
|
24
|
+
isClean: boolean;
|
|
25
|
+
hasUnpushedCommits: boolean;
|
|
26
|
+
hasStashedChanges: boolean;
|
|
27
|
+
hasOperationInProgress: boolean;
|
|
28
|
+
hasModifiedSubmodules: boolean;
|
|
29
|
+
upstreamGone: boolean;
|
|
30
|
+
canRemove: boolean;
|
|
31
|
+
reasons: string[];
|
|
32
|
+
details?: WorktreeStatusDetails;
|
|
33
|
+
}
|
|
34
|
+
export declare class WorktreeStatusService {
|
|
35
|
+
private readonly config;
|
|
36
|
+
private gitInstances;
|
|
37
|
+
private logger;
|
|
38
|
+
constructor(config?: {
|
|
39
|
+
skipLfs?: boolean;
|
|
40
|
+
}, logger?: Logger);
|
|
41
|
+
checkWorktreeStatus(worktreePath: string): Promise<boolean>;
|
|
42
|
+
getFullWorktreeStatus(worktreePath: string, includeDetails?: boolean, lastSyncCommit?: string): Promise<WorktreeStatusResult>;
|
|
43
|
+
private collectSnapshot;
|
|
44
|
+
private deriveIsClean;
|
|
45
|
+
private deriveModifiedSubmodules;
|
|
46
|
+
private buildStatusDetails;
|
|
47
|
+
private operationTypeFromFile;
|
|
48
|
+
private detectOperationFile;
|
|
49
|
+
hasUnpushedCommits(worktreePath: string, lastSyncCommit?: string): Promise<boolean>;
|
|
50
|
+
hasUpstreamGone(worktreePath: string): Promise<boolean>;
|
|
51
|
+
hasStashedChanges(worktreePath: string): Promise<boolean>;
|
|
52
|
+
hasModifiedSubmodules(worktreePath: string): Promise<boolean>;
|
|
53
|
+
hasOperationInProgress(worktreePath: string): Promise<boolean>;
|
|
54
|
+
validateWorktreeForRemoval(worktreePath: string, lastSyncCommit?: string): Promise<void>;
|
|
55
|
+
private filterUntrackedFiles;
|
|
56
|
+
private isDetachedHead;
|
|
57
|
+
private resolveGitDir;
|
|
58
|
+
private createGitInstance;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=worktree-status.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-status.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-status.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI1C,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACjC;AA0BD,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,MAAM,CAAS;gBAGJ,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,EACnD,MAAM,CAAC,EAAE,MAAM;IAKX,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwB3D,qBAAqB,CACzB,YAAY,EAAE,MAAM,EACpB,cAAc,UAAQ,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;YAoDlB,eAAe;IA6F7B,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,qBAAqB;YAKf,mBAAmB;IAa3B,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BnF,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCvD,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzD,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuB7D,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9D,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhF,oBAAoB;YA0BpB,cAAc;YASd,aAAa;IAyB3B,OAAO,CAAC,iBAAiB;CAW1B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { PathResolutionService } from "./path-resolution.service";
|
|
2
|
+
import type { SparseCheckoutConfig } from "../types";
|
|
3
|
+
export interface WorktreeInventory {
|
|
4
|
+
remoteBranches: string[];
|
|
5
|
+
defaultBranch: string;
|
|
6
|
+
existingWorktrees: WorktreeEntry[];
|
|
7
|
+
worktreeDir: string;
|
|
8
|
+
}
|
|
9
|
+
export interface WorktreeEntry {
|
|
10
|
+
path: string;
|
|
11
|
+
branch: string;
|
|
12
|
+
}
|
|
13
|
+
export type CreateAction = {
|
|
14
|
+
kind: "create";
|
|
15
|
+
branch: string;
|
|
16
|
+
path: string;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "skip-create";
|
|
19
|
+
branch: string;
|
|
20
|
+
path: string;
|
|
21
|
+
reason: "path-collision";
|
|
22
|
+
conflictingBranch: string;
|
|
23
|
+
};
|
|
24
|
+
export type PruneAction = {
|
|
25
|
+
kind: "check-prune";
|
|
26
|
+
branch: string;
|
|
27
|
+
path: string;
|
|
28
|
+
};
|
|
29
|
+
export type UpdateAction = {
|
|
30
|
+
kind: "update-candidate";
|
|
31
|
+
branch: string;
|
|
32
|
+
path: string;
|
|
33
|
+
};
|
|
34
|
+
export type SparseAction = {
|
|
35
|
+
kind: "check-sparse";
|
|
36
|
+
branch: string;
|
|
37
|
+
path: string;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "skip-sparse";
|
|
40
|
+
branch: string;
|
|
41
|
+
path: string;
|
|
42
|
+
reason: "not-configured";
|
|
43
|
+
};
|
|
44
|
+
export type SyncAction = CreateAction | PruneAction | UpdateAction | SparseAction;
|
|
45
|
+
export interface SyncPlan {
|
|
46
|
+
create: CreateAction[];
|
|
47
|
+
prune: PruneAction[];
|
|
48
|
+
update: UpdateAction[];
|
|
49
|
+
sparse: SparseAction[];
|
|
50
|
+
warnings: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface SyncPlanOptions {
|
|
53
|
+
pathResolution?: PathResolutionService;
|
|
54
|
+
updateExistingWorktrees?: boolean;
|
|
55
|
+
sparseCheckout?: SparseCheckoutConfig;
|
|
56
|
+
}
|
|
57
|
+
export declare function createWorktreeSyncPlan(inventory: WorktreeInventory, options?: SyncPlanOptions): SyncPlan;
|
|
58
|
+
export declare function planCreateActions(inventory: WorktreeInventory, options?: SyncPlanOptions): CreateAction[];
|
|
59
|
+
export declare function planPruneActions(inventory: WorktreeInventory): PruneAction[];
|
|
60
|
+
export declare function planUpdateActions(inventory: WorktreeInventory): UpdateAction[];
|
|
61
|
+
export declare function planSparseActions(inventory: WorktreeInventory, sparseCheckout?: SparseCheckoutConfig): SparseAction[];
|
|
62
|
+
//# sourceMappingURL=worktree-sync-planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-sync-planner.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync-planner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,aAAa,EAAE,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/G,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEpF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AAElF,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAQ5G;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,EAAE,CAkC7G;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,GAAG,WAAW,EAAE,CAK5E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG,YAAY,EAAE,CAK9E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAE,oBAAoB,GAAG,YAAY,EAAE,CAUrH"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type CloneSkipReason } from "./clone-sync.service";
|
|
2
|
+
import { GitService } from "./git.service";
|
|
3
|
+
import { Logger } from "./logger.service";
|
|
4
|
+
import { SyncOutcomeAccumulator } from "./sync-outcome";
|
|
5
|
+
import type { ProgressListener } from "./progress-emitter";
|
|
6
|
+
import type { Config, SyncOutcome, SyncResult } from "../types";
|
|
7
|
+
export type { ProgressEvent, ProgressListener } from "./progress-emitter";
|
|
8
|
+
export type { SyncOutcome, SyncOutcomeAction, SyncOutcomeCounts, SyncResult } from "../types";
|
|
9
|
+
export type ExclusiveRepoOperationResult<T> = {
|
|
10
|
+
started: true;
|
|
11
|
+
value: T;
|
|
12
|
+
} | {
|
|
13
|
+
started: false;
|
|
14
|
+
reason: "in_progress" | "locked";
|
|
15
|
+
};
|
|
16
|
+
export declare class WorktreeSyncService {
|
|
17
|
+
readonly config: Config;
|
|
18
|
+
private gitService;
|
|
19
|
+
private cloneSyncService;
|
|
20
|
+
private logger;
|
|
21
|
+
private syncInProgress;
|
|
22
|
+
private progressEmitter;
|
|
23
|
+
private repoOperationLock;
|
|
24
|
+
private retryPolicy;
|
|
25
|
+
private worktreeModeSyncRunner;
|
|
26
|
+
private skipsAccumulator;
|
|
27
|
+
private lastOutcome;
|
|
28
|
+
constructor(config: Config);
|
|
29
|
+
getRecordedSkips(): readonly CloneSkipReason[];
|
|
30
|
+
clearRecordedSkips(): void;
|
|
31
|
+
clearPendingInitSkip(): void;
|
|
32
|
+
getLastOutcome(): SyncOutcome | null;
|
|
33
|
+
isCloneMode(): boolean;
|
|
34
|
+
getWorktrees(): Promise<Array<{
|
|
35
|
+
path: string;
|
|
36
|
+
branch: string;
|
|
37
|
+
}>>;
|
|
38
|
+
initialize(): Promise<void>;
|
|
39
|
+
initializeUnlocked(outcome?: SyncOutcomeAccumulator): Promise<void>;
|
|
40
|
+
isInitialized(): boolean;
|
|
41
|
+
isSyncInProgress(): boolean;
|
|
42
|
+
getGitService(): GitService;
|
|
43
|
+
updateLogger(logger: Logger): void;
|
|
44
|
+
onProgress(listener: ProgressListener): () => void;
|
|
45
|
+
runExclusiveRepoOperation<T>(operation: () => Promise<T>): Promise<ExclusiveRepoOperationResult<T>>;
|
|
46
|
+
private emitProgress;
|
|
47
|
+
sync(): Promise<SyncResult>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=worktree-sync.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-sync.service.d.ts","sourceRoot":"","sources":["../../src/services/worktree-sync.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9F,MAAM,MAAM,4BAA4B,CAAC,CAAC,IACtC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC3B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEzD,qBAAa,mBAAmB;aAYF,MAAM,EAAE,MAAM;IAX1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,WAAW,CAA4B;gBAEnB,MAAM,EAAE,MAAM;IAqBnC,gBAAgB,IAAI,SAAS,eAAe,EAAE;IAI9C,kBAAkB,IAAI,IAAI;IAI1B,oBAAoB,IAAI,IAAI;IAI5B,cAAc,IAAI,WAAW,GAAG,IAAI;IAI3C,WAAW,IAAI,OAAO;IAIhB,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAOhE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,kBAAkB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzE,aAAa,IAAI,OAAO;IAOxB,gBAAgB,IAAI,OAAO;IAI3B,aAAa,IAAI,UAAU;IAI3B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASlC,UAAU,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAI5C,yBAAyB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;IAsCzG,OAAO,CAAC,YAAY;IAId,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;CA6DlC"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import type { Logger } from "../services/logger.service";
|
|
2
|
+
import type { WorktreeStatusResult } from "../services/worktree-status.service";
|
|
3
|
+
export interface RetryConfig {
|
|
4
|
+
maxAttempts?: number | "unlimited";
|
|
5
|
+
maxLfsRetries?: number;
|
|
6
|
+
initialDelayMs?: number;
|
|
7
|
+
maxDelayMs?: number;
|
|
8
|
+
backoffMultiplier?: number;
|
|
9
|
+
jitterMs?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface HookContext {
|
|
12
|
+
branchName: string;
|
|
13
|
+
worktreePath: string;
|
|
14
|
+
repoName: string;
|
|
15
|
+
baseBranch: string;
|
|
16
|
+
repoUrl: string;
|
|
17
|
+
}
|
|
18
|
+
export interface HooksConfig {
|
|
19
|
+
onBranchCreated?: string[];
|
|
20
|
+
}
|
|
21
|
+
export type SparseCheckoutMode = "cone" | "no-cone";
|
|
22
|
+
export interface SparseCheckoutConfig {
|
|
23
|
+
include: string[];
|
|
24
|
+
exclude?: string[];
|
|
25
|
+
mode?: SparseCheckoutMode;
|
|
26
|
+
/**
|
|
27
|
+
* Skip fast-forward updates of existing worktrees when the upstream diff
|
|
28
|
+
* does not touch any path inside the sparse-checkout set. Local HEAD lags
|
|
29
|
+
* remote in those cases, but the working tree would have been a no-op
|
|
30
|
+
* anyway — set to false to always update HEAD even when no sparse files
|
|
31
|
+
* change.
|
|
32
|
+
* Only honored in cone mode; no-cone mode always proceeds with the update
|
|
33
|
+
* (gitignore-style pattern matching not implemented here).
|
|
34
|
+
* Default: true.
|
|
35
|
+
*/
|
|
36
|
+
skipUpdateWhenOutsideSparse?: boolean;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Controls concurrency limits for parallel operations.
|
|
40
|
+
* Lower values reduce resource usage but increase total sync time.
|
|
41
|
+
* Higher values speed up syncs but may cause lock contention or resource exhaustion.
|
|
42
|
+
*
|
|
43
|
+
* Note: Total concurrent operations can be maxRepositories × per-repo limits.
|
|
44
|
+
* Tune these values based on your system resources and repository count.
|
|
45
|
+
*/
|
|
46
|
+
export interface ParallelismConfig {
|
|
47
|
+
/** Max concurrent repositories to sync (default: 2) */
|
|
48
|
+
maxRepositories?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Max concurrent worktree creations (default: 1).
|
|
51
|
+
* WARNING: Git's worktree.lock file makes parallel creation unsafe.
|
|
52
|
+
* Only increase if you understand the race condition risks.
|
|
53
|
+
*/
|
|
54
|
+
maxWorktreeCreation?: number;
|
|
55
|
+
/** Max concurrent worktree updates (default: 3) */
|
|
56
|
+
maxWorktreeUpdates?: number;
|
|
57
|
+
/** Max concurrent worktree removals (default: 3) */
|
|
58
|
+
maxWorktreeRemoval?: number;
|
|
59
|
+
/** Max concurrent status checks (default: 20) */
|
|
60
|
+
maxStatusChecks?: number;
|
|
61
|
+
/** Max concurrent per-branch fetches when falling back from bulk fetch (default: 3) */
|
|
62
|
+
maxBranchFetches?: number;
|
|
63
|
+
}
|
|
64
|
+
export type RepositoryMode = "clone" | "worktree";
|
|
65
|
+
export type SyncOutcomeMode = RepositoryMode;
|
|
66
|
+
export type SyncOutcomeScope = "repo" | "branch" | "worktree" | "sparse-checkout";
|
|
67
|
+
export interface SyncOutcomeCounts {
|
|
68
|
+
created: number;
|
|
69
|
+
removed: number;
|
|
70
|
+
updated: number;
|
|
71
|
+
skipped: number;
|
|
72
|
+
preserved: number;
|
|
73
|
+
failed: number;
|
|
74
|
+
noop: number;
|
|
75
|
+
}
|
|
76
|
+
export type SyncOutcomeAction = {
|
|
77
|
+
kind: "created";
|
|
78
|
+
branch: string;
|
|
79
|
+
path: string;
|
|
80
|
+
} | {
|
|
81
|
+
kind: "removed";
|
|
82
|
+
branch: string;
|
|
83
|
+
path: string;
|
|
84
|
+
} | {
|
|
85
|
+
kind: "updated";
|
|
86
|
+
branch: string;
|
|
87
|
+
path: string;
|
|
88
|
+
reason?: string;
|
|
89
|
+
} | {
|
|
90
|
+
kind: "noop";
|
|
91
|
+
scope: SyncOutcomeScope;
|
|
92
|
+
reason: string;
|
|
93
|
+
branch?: string;
|
|
94
|
+
path?: string;
|
|
95
|
+
message?: string;
|
|
96
|
+
} | {
|
|
97
|
+
kind: "skipped";
|
|
98
|
+
scope: SyncOutcomeScope;
|
|
99
|
+
reason: string;
|
|
100
|
+
branch?: string;
|
|
101
|
+
path?: string;
|
|
102
|
+
message?: string;
|
|
103
|
+
} | {
|
|
104
|
+
kind: "preserved-diverged";
|
|
105
|
+
branch: string;
|
|
106
|
+
path: string;
|
|
107
|
+
preservedPath: string;
|
|
108
|
+
} | {
|
|
109
|
+
kind: "failed";
|
|
110
|
+
scope: SyncOutcomeScope;
|
|
111
|
+
error: string;
|
|
112
|
+
reason?: string;
|
|
113
|
+
branch?: string;
|
|
114
|
+
path?: string;
|
|
115
|
+
};
|
|
116
|
+
export interface SyncOutcome {
|
|
117
|
+
repoName?: string;
|
|
118
|
+
mode: SyncOutcomeMode;
|
|
119
|
+
started: true;
|
|
120
|
+
counts: SyncOutcomeCounts;
|
|
121
|
+
actions: SyncOutcomeAction[];
|
|
122
|
+
durationMs?: number;
|
|
123
|
+
}
|
|
124
|
+
export type SyncResult = {
|
|
125
|
+
started: true;
|
|
126
|
+
outcome: SyncOutcome;
|
|
127
|
+
} | {
|
|
128
|
+
started: false;
|
|
129
|
+
reason: "in_progress";
|
|
130
|
+
} | {
|
|
131
|
+
started: false;
|
|
132
|
+
reason: "locked";
|
|
133
|
+
};
|
|
134
|
+
export interface Config {
|
|
135
|
+
repoUrl: string;
|
|
136
|
+
worktreeDir: string;
|
|
137
|
+
cronSchedule: string;
|
|
138
|
+
runOnce: boolean;
|
|
139
|
+
bareRepoDir?: string;
|
|
140
|
+
retry?: RetryConfig;
|
|
141
|
+
parallelism?: ParallelismConfig;
|
|
142
|
+
branchMaxAge?: string;
|
|
143
|
+
branchInclude?: string[];
|
|
144
|
+
branchExclude?: string[];
|
|
145
|
+
skipLfs?: boolean;
|
|
146
|
+
updateExistingWorktrees?: boolean;
|
|
147
|
+
debug?: boolean;
|
|
148
|
+
logger?: Logger;
|
|
149
|
+
filesToCopyOnBranchCreate?: string[];
|
|
150
|
+
hooks?: HooksConfig;
|
|
151
|
+
sparseCheckout?: SparseCheckoutConfig;
|
|
152
|
+
/**
|
|
153
|
+
* Repository strategy. `worktree` (default) clones once as a bare repo and
|
|
154
|
+
* maintains one worktree per remote branch under `worktreeDir/<branch>`.
|
|
155
|
+
* `clone` performs a normal `git clone --branch <branch>` directly into
|
|
156
|
+
* `worktreeDir` — no bare repo, no branch subfolder, one checked-out branch
|
|
157
|
+
* with normal origin/* remote-tracking refs. Designed for monorepo sibling
|
|
158
|
+
* dependencies that need fixed relative paths.
|
|
159
|
+
*/
|
|
160
|
+
mode?: RepositoryMode;
|
|
161
|
+
/**
|
|
162
|
+
* Branch to clone when `mode === "clone"`. If omitted, resolves to the
|
|
163
|
+
* remote default branch via `git ls-remote --symref <url> HEAD`.
|
|
164
|
+
*/
|
|
165
|
+
branch?: string;
|
|
166
|
+
/**
|
|
167
|
+
* Shallow clone depth for config-file clone-mode repositories. Maps to
|
|
168
|
+
* `git clone --depth <N> --no-single-branch` on initial clone and keeps
|
|
169
|
+
* shallow sync fetches at the configured depth.
|
|
170
|
+
*/
|
|
171
|
+
depth?: number;
|
|
172
|
+
/**
|
|
173
|
+
* Internal: directory of the loaded config file. Used to anchor the lock
|
|
174
|
+
* location for clone-mode repos. Populated by ConfigLoaderService — not
|
|
175
|
+
* a user-facing field.
|
|
176
|
+
*/
|
|
177
|
+
__configFileDir?: string;
|
|
178
|
+
/**
|
|
179
|
+
* Inactivity timeout (ms) for fetch/standard git operations.
|
|
180
|
+
* Triggers when no stdout/stderr data arrives within window.
|
|
181
|
+
* Default: 300_000 (5 min). Set 0 to disable.
|
|
182
|
+
*/
|
|
183
|
+
fetchTimeoutMs?: number;
|
|
184
|
+
/**
|
|
185
|
+
* Inactivity timeout (ms) for `git clone`. Larger than fetch because
|
|
186
|
+
* server-side pack resolution can be silent for several minutes on big repos.
|
|
187
|
+
* Default: 900_000 (15 min). Set 0 to disable.
|
|
188
|
+
*/
|
|
189
|
+
cloneTimeoutMs?: number;
|
|
190
|
+
}
|
|
191
|
+
export interface RepositoryConfig extends Config {
|
|
192
|
+
name: string;
|
|
193
|
+
}
|
|
194
|
+
export type InitConfigInput = Pick<RepositoryConfig, "repoUrl" | "worktreeDir" | "bareRepoDir" | "cronSchedule" | "runOnce">;
|
|
195
|
+
export interface ConfigFile {
|
|
196
|
+
defaults?: Partial<Config>;
|
|
197
|
+
repositories: RepositoryConfig[];
|
|
198
|
+
retry?: RetryConfig;
|
|
199
|
+
parallelism?: ParallelismConfig;
|
|
200
|
+
}
|
|
201
|
+
export interface WorktreeStatus {
|
|
202
|
+
branchName: string;
|
|
203
|
+
worktreePath: string;
|
|
204
|
+
hasLocalChanges: boolean;
|
|
205
|
+
}
|
|
206
|
+
export interface WorktreeStatusEntry {
|
|
207
|
+
branch: string;
|
|
208
|
+
path: string;
|
|
209
|
+
status: WorktreeStatusResult;
|
|
210
|
+
}
|
|
211
|
+
export interface RepositoryListEntry {
|
|
212
|
+
index: number;
|
|
213
|
+
name: string;
|
|
214
|
+
repoUrl: string;
|
|
215
|
+
}
|
|
216
|
+
export interface RepositoryDiskUsage {
|
|
217
|
+
repoIndex: number;
|
|
218
|
+
repoName: string;
|
|
219
|
+
sizeBytes: number | null;
|
|
220
|
+
sizeFormatted: string;
|
|
221
|
+
bareSizeBytes: number;
|
|
222
|
+
worktreeSizeBytes: number;
|
|
223
|
+
error?: string;
|
|
224
|
+
}
|
|
225
|
+
export interface DivergedDirectoryInfo {
|
|
226
|
+
name: string;
|
|
227
|
+
path: string;
|
|
228
|
+
originalBranch: string;
|
|
229
|
+
divergedAt: string;
|
|
230
|
+
sizeBytes: number;
|
|
231
|
+
sizeFormatted: string;
|
|
232
|
+
}
|
|
233
|
+
export type SyncWorktreesRetryConfig = RetryConfig;
|
|
234
|
+
export type SyncWorktreesParallelismConfig = ParallelismConfig;
|
|
235
|
+
export type SyncWorktreesHooksConfig = HooksConfig;
|
|
236
|
+
export type SyncWorktreesSparseCheckoutMode = SparseCheckoutMode;
|
|
237
|
+
export type SyncWorktreesSparseCheckoutConfig = SparseCheckoutConfig;
|
|
238
|
+
export type SyncWorktreesRepositoryMode = RepositoryMode;
|
|
239
|
+
interface SyncWorktreesCommonConfigFields {
|
|
240
|
+
cronSchedule?: string;
|
|
241
|
+
runOnce?: boolean;
|
|
242
|
+
retry?: SyncWorktreesRetryConfig;
|
|
243
|
+
parallelism?: SyncWorktreesParallelismConfig;
|
|
244
|
+
skipLfs?: boolean;
|
|
245
|
+
debug?: boolean;
|
|
246
|
+
filesToCopyOnBranchCreate?: string[];
|
|
247
|
+
hooks?: SyncWorktreesHooksConfig;
|
|
248
|
+
sparseCheckout?: SyncWorktreesSparseCheckoutConfig;
|
|
249
|
+
}
|
|
250
|
+
interface SyncWorktreesRepositoryBase extends SyncWorktreesCommonConfigFields {
|
|
251
|
+
name: string;
|
|
252
|
+
repoUrl: string;
|
|
253
|
+
worktreeDir: string;
|
|
254
|
+
}
|
|
255
|
+
export interface SyncWorktreesCloneRepository extends SyncWorktreesRepositoryBase {
|
|
256
|
+
mode: "clone";
|
|
257
|
+
branch?: string;
|
|
258
|
+
depth?: number;
|
|
259
|
+
bareRepoDir?: never;
|
|
260
|
+
branchMaxAge?: never;
|
|
261
|
+
branchInclude?: never;
|
|
262
|
+
branchExclude?: never;
|
|
263
|
+
updateExistingWorktrees?: never;
|
|
264
|
+
}
|
|
265
|
+
export interface SyncWorktreesWorktreeRepository extends SyncWorktreesRepositoryBase {
|
|
266
|
+
mode?: "worktree";
|
|
267
|
+
bareRepoDir?: string;
|
|
268
|
+
branchMaxAge?: string;
|
|
269
|
+
branchInclude?: string[];
|
|
270
|
+
branchExclude?: string[];
|
|
271
|
+
updateExistingWorktrees?: boolean;
|
|
272
|
+
branch?: never;
|
|
273
|
+
depth?: never;
|
|
274
|
+
}
|
|
275
|
+
export type SyncWorktreesRepository = SyncWorktreesCloneRepository | SyncWorktreesWorktreeRepository;
|
|
276
|
+
type SyncWorktreesDefaultsBase = SyncWorktreesCommonConfigFields;
|
|
277
|
+
export interface SyncWorktreesCloneDefaults extends SyncWorktreesDefaultsBase {
|
|
278
|
+
mode: "clone";
|
|
279
|
+
branch?: string;
|
|
280
|
+
depth?: number;
|
|
281
|
+
branchMaxAge?: never;
|
|
282
|
+
branchInclude?: never;
|
|
283
|
+
branchExclude?: never;
|
|
284
|
+
updateExistingWorktrees?: never;
|
|
285
|
+
}
|
|
286
|
+
export interface SyncWorktreesWorktreeDefaults extends SyncWorktreesDefaultsBase {
|
|
287
|
+
mode?: "worktree";
|
|
288
|
+
branchMaxAge?: string;
|
|
289
|
+
branchInclude?: string[];
|
|
290
|
+
branchExclude?: string[];
|
|
291
|
+
updateExistingWorktrees?: boolean;
|
|
292
|
+
branch?: never;
|
|
293
|
+
depth?: never;
|
|
294
|
+
}
|
|
295
|
+
export type SyncWorktreesDefaults = SyncWorktreesCloneDefaults | SyncWorktreesWorktreeDefaults;
|
|
296
|
+
export interface SyncWorktreesConfig {
|
|
297
|
+
defaults?: SyncWorktreesDefaults;
|
|
298
|
+
repositories: SyncWorktreesRepository[];
|
|
299
|
+
retry?: SyncWorktreesRetryConfig;
|
|
300
|
+
parallelism?: SyncWorktreesParallelismConfig;
|
|
301
|
+
}
|
|
302
|
+
export {};
|
|
303
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SyncMetadata {
|
|
2
|
+
lastSyncCommit: string;
|
|
3
|
+
lastSyncDate: string;
|
|
4
|
+
upstreamBranch: string;
|
|
5
|
+
createdFrom: {
|
|
6
|
+
branch: string;
|
|
7
|
+
commit: string;
|
|
8
|
+
};
|
|
9
|
+
syncHistory: SyncHistoryEntry[];
|
|
10
|
+
}
|
|
11
|
+
export interface SyncHistoryEntry {
|
|
12
|
+
date: string;
|
|
13
|
+
commit: string;
|
|
14
|
+
action: "created" | "updated" | "fetched";
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=sync-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-metadata.d.ts","sourceRoot":"","sources":["../../src/types/sync-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface AppSyncProgress {
|
|
2
|
+
repo: string;
|
|
3
|
+
phase: string;
|
|
4
|
+
message: string;
|
|
5
|
+
progress?: number;
|
|
6
|
+
processed?: number;
|
|
7
|
+
total?: number;
|
|
8
|
+
completed?: boolean;
|
|
9
|
+
}
|
|
10
|
+
type AppEventMap = {
|
|
11
|
+
updateLastSyncTime: void;
|
|
12
|
+
setStatus: "idle" | "syncing";
|
|
13
|
+
setSyncProgress: AppSyncProgress | null;
|
|
14
|
+
setDiskSpace: string;
|
|
15
|
+
addLog: {
|
|
16
|
+
message: string;
|
|
17
|
+
level: "info" | "warn" | "error";
|
|
18
|
+
};
|
|
19
|
+
uiReady: void;
|
|
20
|
+
updateRepositoryCount: number;
|
|
21
|
+
updateCronSchedule: string | undefined;
|
|
22
|
+
};
|
|
23
|
+
type EventCallback<T> = T extends void ? () => void : (payload: T) => void;
|
|
24
|
+
export declare class AppEventEmitter {
|
|
25
|
+
private listeners;
|
|
26
|
+
on<K extends keyof AppEventMap>(event: K, callback: EventCallback<AppEventMap[K]>): () => void;
|
|
27
|
+
emit<K extends keyof AppEventMap>(event: K, ...args: AppEventMap[K] extends void ? [] : [AppEventMap[K]]): void;
|
|
28
|
+
removeAllListeners(): void;
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=app-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-events.d.ts","sourceRoot":"","sources":["../../src/utils/app-events.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,WAAW,GAAG;IACjB,kBAAkB,EAAE,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC9D,OAAO,EAAE,IAAI,CAAC;IACd,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAI3E,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA4D;IAE7E,EAAE,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAiB9F,IAAI,CAAC,CAAC,SAAS,MAAM,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAa/G,kBAAkB,IAAI,IAAI;CAG3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch-filter.d.ts","sourceRoot":"","sources":["../../src/utils/branch-filter.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAYzG"}
|