@mcadam/worktree 1.1.0 → 1.3.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/dist/cli.js +18 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +9 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +17 -12
- package/dist/commands/list.js.map +1 -1
- package/dist/components/WorktreeList.d.ts +1 -1
- package/dist/components/WorktreeList.d.ts.map +1 -1
- package/dist/components/WorktreeList.js +2 -2
- package/dist/components/WorktreeList.js.map +1 -1
- package/dist/utils/gh.d.ts +11 -5
- package/dist/utils/gh.d.ts.map +1 -1
- package/dist/utils/gh.js +90 -17
- package/dist/utils/gh.js.map +1 -1
- package/dist/utils/git.d.ts +5 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +73 -8
- package/dist/utils/git.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
2
3
|
import { program } from 'commander';
|
|
3
|
-
import {
|
|
4
|
-
import { configManager } from './config/manager.js';
|
|
4
|
+
import { configCommand } from './commands/config.js';
|
|
5
5
|
import { createCommand } from './commands/create.js';
|
|
6
|
-
import { listCommand } from './commands/list.js';
|
|
7
6
|
import { initCommand } from './commands/init.js';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
import { listCommand } from './commands/list.js';
|
|
8
|
+
import { getGitRoot, isGitRepo } from './config/detector.js';
|
|
9
|
+
import { configManager } from './config/manager.js';
|
|
10
|
+
function getPackageVersion() {
|
|
11
|
+
const packageJson = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
12
|
+
return packageJson.version;
|
|
13
|
+
}
|
|
14
|
+
async function getGitRootOrExit() {
|
|
11
15
|
if (!(await isGitRepo())) {
|
|
12
16
|
console.error('Error: Not in a git repository');
|
|
13
17
|
process.exit(1);
|
|
@@ -17,16 +21,19 @@ async function main() {
|
|
|
17
21
|
console.error('Error: Could not determine git root');
|
|
18
22
|
process.exit(1);
|
|
19
23
|
}
|
|
20
|
-
// Load config
|
|
21
24
|
await configManager.load();
|
|
25
|
+
return gitRoot;
|
|
26
|
+
}
|
|
27
|
+
async function main() {
|
|
22
28
|
program
|
|
23
29
|
.name('worktree')
|
|
24
30
|
.description('CLI tool for managing Git worktrees across multiple repositories')
|
|
25
|
-
.version(
|
|
31
|
+
.version(getPackageVersion());
|
|
26
32
|
program
|
|
27
33
|
.argument('[branch]', 'Branch name to create worktree for')
|
|
28
34
|
.description('Create a new worktree or manage existing ones')
|
|
29
35
|
.action(async (branch) => {
|
|
36
|
+
const gitRoot = await getGitRootOrExit();
|
|
30
37
|
if (branch) {
|
|
31
38
|
// Create worktree
|
|
32
39
|
await createCommand(branch, gitRoot);
|
|
@@ -40,18 +47,21 @@ async function main() {
|
|
|
40
47
|
.command('list')
|
|
41
48
|
.description('List and manage worktrees across all configured repositories')
|
|
42
49
|
.action(async () => {
|
|
50
|
+
const gitRoot = await getGitRootOrExit();
|
|
43
51
|
await listCommand(gitRoot);
|
|
44
52
|
});
|
|
45
53
|
program
|
|
46
54
|
.command('init')
|
|
47
55
|
.description('Initialize configuration for current repository')
|
|
48
56
|
.action(async () => {
|
|
57
|
+
const gitRoot = await getGitRootOrExit();
|
|
49
58
|
await initCommand(gitRoot);
|
|
50
59
|
});
|
|
51
60
|
program
|
|
52
61
|
.command('config')
|
|
53
62
|
.description('Manage worktree configuration')
|
|
54
63
|
.action(async () => {
|
|
64
|
+
const gitRoot = await getGitRootOrExit();
|
|
55
65
|
await configCommand(gitRoot);
|
|
56
66
|
});
|
|
57
67
|
await program.parseAsync(process.argv);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,SAAS,iBAAiB;IACxB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAA;IAExB,OAAO,WAAW,CAAC,OAAO,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAA;IAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAC1B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO;SACJ,IAAI,CAAC,UAAU,CAAC;SAChB,WAAW,CAAC,kEAAkE,CAAC;SAC/E,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAE/B,OAAO;SACJ,QAAQ,CAAC,UAAU,EAAE,oCAAoC,CAAC;SAC1D,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;QAChC,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;QAExC,IAAI,MAAM,EAAE,CAAC;YACX,kBAAkB;YAClB,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;QACxC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iDAAiD,CAAC;SAC9D,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;QACxC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEJ,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAA;QACxC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAuGA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAuGA,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FlF"}
|
package/dist/commands/create.js
CHANGED
|
@@ -5,7 +5,7 @@ import { execa } from 'execa';
|
|
|
5
5
|
import fs from 'fs-extra';
|
|
6
6
|
import ora from 'ora';
|
|
7
7
|
import { configManager } from '../config/manager.js';
|
|
8
|
-
import { createWorktree } from '../utils/git.js';
|
|
8
|
+
import { createWorktree, setupSubmodulesForBranch } from '../utils/git.js';
|
|
9
9
|
import { createWorktreeName } from '../utils/sanitize.js';
|
|
10
10
|
import { initCommand } from './init.js';
|
|
11
11
|
async function isWorktreeClean(gitRoot) {
|
|
@@ -106,6 +106,14 @@ export async function createCommand(branch, gitRoot) {
|
|
|
106
106
|
spinner.start('Creating worktree...');
|
|
107
107
|
await createWorktree(config.basePath, worktreeName, branch, gitRoot);
|
|
108
108
|
spinner.succeed('Worktree created');
|
|
109
|
+
spinner.start('Setting up submodules...');
|
|
110
|
+
const submodulePaths = await setupSubmodulesForBranch(worktreePath, branch);
|
|
111
|
+
if (submodulePaths.length > 0) {
|
|
112
|
+
spinner.succeed(`Set up ${submodulePaths.length} submodule${submodulePaths.length === 1 ? '' : 's'}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
spinner.info('No submodules found');
|
|
116
|
+
}
|
|
109
117
|
// Copy .env file if configured
|
|
110
118
|
if (config.envPath) {
|
|
111
119
|
spinner.start('Copying environment file...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":"AAyFA,wBAAsB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvE"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from 'react';
|
|
3
|
-
import { render, Box, Text } from 'ink';
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
2
|
import chalk from 'chalk';
|
|
3
|
+
import { Box, Text, render } from 'ink';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { WorktreeList } from '../components/WorktreeList.js';
|
|
5
6
|
import { configManager } from '../config/manager.js';
|
|
7
|
+
import { enrichWorktreesWithPRInfo, isGhInstalled } from '../utils/gh.js';
|
|
6
8
|
import { listWorktrees, removeWorktree } from '../utils/git.js';
|
|
7
|
-
|
|
8
|
-
import { WorktreeList } from '../components/WorktreeList.js';
|
|
9
|
-
function ListApp({ repos }) {
|
|
9
|
+
function ListApp({ repos, prInfoUnavailable, }) {
|
|
10
10
|
const [currentRepoIndex] = useState(0);
|
|
11
11
|
const [isDeleting, setIsDeleting] = useState(false);
|
|
12
12
|
const handleDelete = async (paths) => {
|
|
@@ -26,7 +26,7 @@ function ListApp({ repos }) {
|
|
|
26
26
|
}
|
|
27
27
|
if (successCount > 0) {
|
|
28
28
|
console.log(chalk.cyan(`\n✅ Successfully deleted ${successCount} worktree${successCount > 1 ? 's' : ''}!`));
|
|
29
|
-
console.log(chalk.gray(
|
|
29
|
+
console.log(chalk.gray('💪 Workspace cleaned up and ready to go!'));
|
|
30
30
|
}
|
|
31
31
|
// Refresh the list after deletion
|
|
32
32
|
setTimeout(() => process.exit(0), 1500);
|
|
@@ -37,16 +37,19 @@ function ListApp({ repos }) {
|
|
|
37
37
|
if (isDeleting) {
|
|
38
38
|
return (_jsx(Box, { children: _jsx(Text, { color: "cyan", children: "Deleting worktrees..." }) }));
|
|
39
39
|
}
|
|
40
|
-
return (
|
|
40
|
+
return (_jsxs(Box, { flexDirection: "column", children: [prInfoUnavailable && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "yellow", children: "Unable to load PR info, please install GitHub CLI" }) })), repos.map((repo) => (_jsx(WorktreeList, { worktrees: repo.worktrees, repoName: repo.repoName, repoPath: repo.repoPath, onDelete: handleDelete }, repo.repoPath)))] }));
|
|
41
41
|
}
|
|
42
42
|
export async function listCommand(currentGitRoot) {
|
|
43
43
|
const allRepoConfigs = await configManager.getAllRepoConfigs();
|
|
44
44
|
const repos = [];
|
|
45
|
+
const canLoadPRInfo = await isGhInstalled();
|
|
45
46
|
// Add current repo first if configured
|
|
46
47
|
const currentRepoConfig = allRepoConfigs[currentGitRoot];
|
|
47
48
|
if (currentRepoConfig) {
|
|
48
49
|
const worktrees = await listWorktrees(currentGitRoot);
|
|
49
|
-
|
|
50
|
+
if (canLoadPRInfo) {
|
|
51
|
+
await enrichWorktreesWithPRInfo(worktrees, currentGitRoot);
|
|
52
|
+
}
|
|
50
53
|
repos.push({
|
|
51
54
|
repoPath: currentGitRoot,
|
|
52
55
|
repoName: currentRepoConfig.name,
|
|
@@ -59,14 +62,16 @@ export async function listCommand(currentGitRoot) {
|
|
|
59
62
|
continue;
|
|
60
63
|
try {
|
|
61
64
|
const worktrees = await listWorktrees(repoPath);
|
|
62
|
-
|
|
65
|
+
if (canLoadPRInfo) {
|
|
66
|
+
await enrichWorktreesWithPRInfo(worktrees, repoPath);
|
|
67
|
+
}
|
|
63
68
|
repos.push({
|
|
64
69
|
repoPath,
|
|
65
70
|
repoName: config.name,
|
|
66
71
|
worktrees,
|
|
67
72
|
});
|
|
68
73
|
}
|
|
69
|
-
catch
|
|
74
|
+
catch {
|
|
70
75
|
// Skip repos that might have been deleted or are inaccessible
|
|
71
76
|
console.warn(chalk.yellow(`Warning: Could not access ${config.name} at ${repoPath}`));
|
|
72
77
|
}
|
|
@@ -77,6 +82,6 @@ export async function listCommand(currentGitRoot) {
|
|
|
77
82
|
console.log(chalk.gray(' Then create your first worktree with "worktree <branch>"!'));
|
|
78
83
|
return;
|
|
79
84
|
}
|
|
80
|
-
render(_jsx(ListApp, { repos: repos }));
|
|
85
|
+
render(_jsx(ListApp, { repos: repos, prInfoUnavailable: !canLoadPRInfo }));
|
|
81
86
|
}
|
|
82
87
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeList.d.ts","sourceRoot":"","sources":["../../src/components/WorktreeList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"WorktreeList.d.ts","sourceRoot":"","sources":["../../src/components/WorktreeList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,UAAU,iBAAiB;IACzB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;CACpC;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CA0E1F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useApp, useInput } from 'ink';
|
|
2
3
|
import { useState } from 'react';
|
|
3
|
-
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
4
|
export function WorktreeList({ worktrees, repoName, repoPath, onDelete }) {
|
|
5
5
|
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
6
6
|
const [checkedItems, setCheckedItems] = useState(new Set());
|
|
@@ -36,6 +36,6 @@ export function WorktreeList({ worktrees, repoName, repoPath, onDelete }) {
|
|
|
36
36
|
if (filteredWorktrees.length === 0) {
|
|
37
37
|
return (_jsx(Box, { flexDirection: "column", marginY: 1, children: _jsxs(Text, { color: "yellow", children: ["No worktrees found for ", repoName] }) }));
|
|
38
38
|
}
|
|
39
|
-
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [repoName, " (", repoPath, ")"] }) }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: filteredWorktrees.map((worktree, index) => (_jsxs(Box, { children: [_jsx(Text, { color: index === selectedIndex ? 'cyan' : 'white', children: index === selectedIndex ? '❯' : ' ' }), _jsx(Text, { children: " " }), _jsx(Text, { children: checkedItems.has(worktree.path) ? '☑' : '☐' }), _jsx(Text, { children: " " }), _jsx(Text, { color: index === selectedIndex ? 'cyan' : 'white', children: worktree.branch || 'detached' }), worktree.isPushed &&
|
|
39
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, children: _jsxs(Text, { bold: true, color: "cyan", children: [repoName, " (", repoPath, ")"] }) }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: filteredWorktrees.map((worktree, index) => (_jsxs(Box, { children: [_jsx(Text, { color: index === selectedIndex ? 'cyan' : 'white', children: index === selectedIndex ? '❯' : ' ' }), _jsx(Text, { children: " " }), _jsx(Text, { children: checkedItems.has(worktree.path) ? '☑' : '☐' }), _jsx(Text, { children: " " }), _jsx(Text, { color: index === selectedIndex ? 'cyan' : 'white', children: worktree.branch || 'detached' }), worktree.isPushed && _jsx(Text, { color: "green", children: " \u2713 remote" }), worktree.hasPR && (_jsxs(Text, { color: worktree.isPRMerged ? 'green' : 'magenta', children: [' ', "\uD83D\uDD00 PR #", worktree.prNumber, worktree.isPRMerged ? ' (Merged)' : ''] })), !worktree.isPushed && _jsx(Text, { color: "yellow", children: " \u26A0\uFE0F local only" })] }, worktree.path))) }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["[Space] Select [Enter] Delete Selected (", checkedItems.size, ") [Q] Quit"] }) })] }));
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=WorktreeList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeList.js","sourceRoot":"","sources":["../../src/components/WorktreeList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"WorktreeList.js","sourceRoot":"","sources":["../../src/components/WorktreeList.tsx"],"names":[],"mappings":"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"}
|
package/dist/utils/gh.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
+
import type { Worktree } from './git.js';
|
|
1
2
|
interface PRInfo {
|
|
2
3
|
number: number;
|
|
3
|
-
headRefName: string;
|
|
4
4
|
state: string;
|
|
5
|
+
headRefName?: string;
|
|
6
|
+
updatedAt?: string;
|
|
7
|
+
updated_at?: string;
|
|
8
|
+
mergedAt?: string | null;
|
|
9
|
+
merged_at?: string | null;
|
|
10
|
+
head?: {
|
|
11
|
+
ref?: string;
|
|
12
|
+
sha?: string;
|
|
13
|
+
};
|
|
5
14
|
}
|
|
6
15
|
export declare function isGhInstalled(): Promise<boolean>;
|
|
16
|
+
export declare function enrichWorktreesWithPRInfo(worktrees: Worktree[], gitRoot: string): Promise<void>;
|
|
7
17
|
export declare function getPRInfo(gitRoot: string): Promise<Map<string, PRInfo>>;
|
|
8
|
-
export declare function enrichWorktreesWithPRInfo(worktrees: Array<{
|
|
9
|
-
branch?: string;
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
}>, gitRoot: string): Promise<void>;
|
|
12
18
|
export {};
|
|
13
19
|
//# sourceMappingURL=gh.d.ts.map
|
package/dist/utils/gh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../../src/utils/gh.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../../src/utils/gh.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD;AAwED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,QAAQ,EAAE,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmC7E"}
|
package/dist/utils/gh.js
CHANGED
|
@@ -8,34 +8,107 @@ export async function isGhInstalled() {
|
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
function pickBestPR(prs) {
|
|
12
|
+
return prs.sort((a, b) => {
|
|
13
|
+
const aIsOpen = a.state.toUpperCase() === 'OPEN';
|
|
14
|
+
const bIsOpen = b.state.toUpperCase() === 'OPEN';
|
|
15
|
+
if (aIsOpen && !bIsOpen)
|
|
16
|
+
return -1;
|
|
17
|
+
if (!aIsOpen && bIsOpen)
|
|
18
|
+
return 1;
|
|
19
|
+
return getPRUpdatedAt(b).localeCompare(getPRUpdatedAt(a));
|
|
20
|
+
})[0];
|
|
21
|
+
}
|
|
22
|
+
function getPRUpdatedAt(pr) {
|
|
23
|
+
return pr.updatedAt ?? pr.updated_at ?? '';
|
|
24
|
+
}
|
|
25
|
+
function getPRState(pr) {
|
|
26
|
+
if (isPRMerged(pr))
|
|
27
|
+
return 'MERGED';
|
|
28
|
+
return pr.state.toUpperCase();
|
|
29
|
+
}
|
|
30
|
+
function isPRMerged(pr) {
|
|
31
|
+
return pr.state.toUpperCase() === 'MERGED' || Boolean(pr.mergedAt ?? pr.merged_at);
|
|
32
|
+
}
|
|
33
|
+
async function getPRForCommit(commit, gitRoot) {
|
|
34
|
+
try {
|
|
35
|
+
const { stdout } = await execa('gh', [
|
|
36
|
+
'api',
|
|
37
|
+
`repos/:owner/:repo/commits/${commit}/pulls`,
|
|
38
|
+
'--header',
|
|
39
|
+
'Accept: application/vnd.github+json',
|
|
40
|
+
], { cwd: gitRoot });
|
|
41
|
+
const prs = JSON.parse(stdout);
|
|
42
|
+
return pickBestPR(prs);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async function getPRForBranch(branch, gitRoot) {
|
|
49
|
+
try {
|
|
50
|
+
const { stdout } = await execa('gh', [
|
|
51
|
+
'pr',
|
|
52
|
+
'list',
|
|
53
|
+
'--state',
|
|
54
|
+
'all',
|
|
55
|
+
'--head',
|
|
56
|
+
branch,
|
|
57
|
+
'--json',
|
|
58
|
+
'number,headRefName,state,updatedAt,mergedAt',
|
|
59
|
+
'--limit',
|
|
60
|
+
'100',
|
|
61
|
+
], { cwd: gitRoot });
|
|
62
|
+
const prs = JSON.parse(stdout);
|
|
63
|
+
return pickBestPR(prs);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function enrichWorktreesWithPRInfo(worktrees, gitRoot) {
|
|
70
|
+
if (!(await isGhInstalled())) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
await Promise.all(worktrees.map(async (worktree) => {
|
|
74
|
+
if (!worktree.branch || worktree.isMain)
|
|
75
|
+
return;
|
|
76
|
+
const pr = (worktree.commit ? await getPRForCommit(worktree.commit, gitRoot) : undefined) ??
|
|
77
|
+
(await getPRForBranch(worktree.branch, gitRoot));
|
|
78
|
+
if (pr) {
|
|
79
|
+
worktree.hasPR = true;
|
|
80
|
+
worktree.prNumber = pr.number;
|
|
81
|
+
worktree.prState = getPRState(pr);
|
|
82
|
+
worktree.isPRMerged = isPRMerged(pr);
|
|
83
|
+
}
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
11
86
|
export async function getPRInfo(gitRoot) {
|
|
12
87
|
const prMap = new Map();
|
|
13
88
|
if (!(await isGhInstalled())) {
|
|
14
89
|
return prMap;
|
|
15
90
|
}
|
|
16
91
|
try {
|
|
17
|
-
const { stdout } = await execa('gh', [
|
|
92
|
+
const { stdout } = await execa('gh', [
|
|
93
|
+
'pr',
|
|
94
|
+
'list',
|
|
95
|
+
'--state',
|
|
96
|
+
'all',
|
|
97
|
+
'--json',
|
|
98
|
+
'number,headRefName,state,updatedAt,mergedAt',
|
|
99
|
+
'--limit',
|
|
100
|
+
'500',
|
|
101
|
+
], { cwd: gitRoot });
|
|
18
102
|
const prs = JSON.parse(stdout);
|
|
19
103
|
for (const pr of prs) {
|
|
20
|
-
|
|
104
|
+
if (pr.headRefName) {
|
|
105
|
+
prMap.set(pr.headRefName, pr);
|
|
106
|
+
}
|
|
21
107
|
}
|
|
22
108
|
}
|
|
23
|
-
catch
|
|
24
|
-
// gh might not be authenticated or repo might not have GitHub remote
|
|
25
|
-
// Silently fail and return empty map
|
|
109
|
+
catch {
|
|
110
|
+
// gh might not be authenticated or repo might not have GitHub remote.
|
|
26
111
|
}
|
|
27
112
|
return prMap;
|
|
28
113
|
}
|
|
29
|
-
export async function enrichWorktreesWithPRInfo(worktrees, gitRoot) {
|
|
30
|
-
const prInfo = await getPRInfo(gitRoot);
|
|
31
|
-
for (const worktree of worktrees) {
|
|
32
|
-
if (worktree.branch) {
|
|
33
|
-
const pr = prInfo.get(worktree.branch);
|
|
34
|
-
if (pr) {
|
|
35
|
-
worktree.hasPR = true;
|
|
36
|
-
worktree.prNumber = pr.number;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
114
|
//# sourceMappingURL=gh.js.map
|
package/dist/utils/gh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../../src/utils/gh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../../src/utils/gh.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -6,8 +6,13 @@ export interface Worktree {
|
|
|
6
6
|
isPushed?: boolean;
|
|
7
7
|
hasPR?: boolean;
|
|
8
8
|
prNumber?: number;
|
|
9
|
+
prState?: string;
|
|
10
|
+
isPRMerged?: boolean;
|
|
9
11
|
}
|
|
10
12
|
export declare function createWorktree(basePath: string, worktreeName: string, branchName: string, gitRoot: string): Promise<void>;
|
|
13
|
+
export declare function checkoutBranch(branchName: string, gitRoot: string): Promise<void>;
|
|
14
|
+
export declare function listSubmodulePaths(gitRoot: string): Promise<string[]>;
|
|
15
|
+
export declare function setupSubmodulesForBranch(gitRoot: string, branchName: string): Promise<string[]>;
|
|
11
16
|
export declare function listWorktrees(gitRoot: string): Promise<Worktree[]>;
|
|
12
17
|
export declare function removeWorktree(worktreePath: string, gitRoot: string): Promise<void>;
|
|
13
18
|
export declare function getAllBranches(gitRoot: string): Promise<string[]>;
|
package/dist/utils/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAiBD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BvF;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgB3E;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBnB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqDxE;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASvE"}
|
package/dist/utils/git.js
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
1
2
|
import { execa } from 'execa';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import fs from 'fs-extra';
|
|
4
|
+
async function fetchRemoteBranch(branchName, gitRoot) {
|
|
5
|
+
await execa('git', ['fetch', 'origin', `${branchName}:refs/remotes/origin/${branchName}`], {
|
|
6
|
+
cwd: gitRoot,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
async function hasLocalBranch(branchName, gitRoot) {
|
|
6
10
|
try {
|
|
7
|
-
await execa('git', ['rev-parse', '--verify', branchName], { cwd: gitRoot });
|
|
11
|
+
await execa('git', ['rev-parse', '--verify', `refs/heads/${branchName}`], { cwd: gitRoot });
|
|
12
|
+
return true;
|
|
8
13
|
}
|
|
9
14
|
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function createWorktree(basePath, worktreeName, branchName, gitRoot) {
|
|
19
|
+
const worktreePath = path.join(basePath, worktreeName);
|
|
20
|
+
if (!(await hasLocalBranch(branchName, gitRoot))) {
|
|
10
21
|
// Branch doesn't exist locally, check remote
|
|
11
22
|
try {
|
|
12
|
-
await
|
|
13
|
-
await execa('git', ['worktree', 'add', worktreePath, `origin/${branchName}`], {
|
|
23
|
+
await fetchRemoteBranch(branchName, gitRoot);
|
|
24
|
+
await execa('git', ['worktree', 'add', '-b', branchName, worktreePath, `origin/${branchName}`], {
|
|
25
|
+
cwd: gitRoot,
|
|
26
|
+
});
|
|
14
27
|
return;
|
|
15
28
|
}
|
|
16
29
|
catch {
|
|
@@ -22,6 +35,56 @@ export async function createWorktree(basePath, worktreeName, branchName, gitRoot
|
|
|
22
35
|
// Branch exists locally
|
|
23
36
|
await execa('git', ['worktree', 'add', worktreePath, branchName], { cwd: gitRoot });
|
|
24
37
|
}
|
|
38
|
+
export async function checkoutBranch(branchName, gitRoot) {
|
|
39
|
+
let hasRemoteBranch = false;
|
|
40
|
+
try {
|
|
41
|
+
await fetchRemoteBranch(branchName, gitRoot);
|
|
42
|
+
hasRemoteBranch = true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// The submodule may not have a same-named remote branch; fall back to local/current commit.
|
|
46
|
+
}
|
|
47
|
+
if (await hasLocalBranch(branchName, gitRoot)) {
|
|
48
|
+
await execa('git', ['checkout', branchName], { cwd: gitRoot });
|
|
49
|
+
if (hasRemoteBranch) {
|
|
50
|
+
await execa('git', ['pull', '--ff-only', 'origin', branchName], { cwd: gitRoot });
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (hasRemoteBranch) {
|
|
55
|
+
await execa('git', ['checkout', '-b', branchName, `origin/${branchName}`], { cwd: gitRoot });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Create new branch from the currently checked-out commit
|
|
59
|
+
await execa('git', ['checkout', '-b', branchName], { cwd: gitRoot });
|
|
60
|
+
}
|
|
61
|
+
export async function listSubmodulePaths(gitRoot) {
|
|
62
|
+
const gitmodulesPath = path.join(gitRoot, '.gitmodules');
|
|
63
|
+
if (!(await fs.pathExists(gitmodulesPath))) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
const { stdout } = await execa('git', ['config', '--file', '.gitmodules', '--get-regexp', 'path'], { cwd: gitRoot });
|
|
67
|
+
return stdout
|
|
68
|
+
.split('\n')
|
|
69
|
+
.map((line) => line.trim().match(/^[^\s]+\s+(.+)$/)?.[1])
|
|
70
|
+
.filter((submodulePath) => Boolean(submodulePath));
|
|
71
|
+
}
|
|
72
|
+
export async function setupSubmodulesForBranch(gitRoot, branchName) {
|
|
73
|
+
const submodulePaths = await listSubmodulePaths(gitRoot);
|
|
74
|
+
if (submodulePaths.length === 0) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
await execa('git', ['submodule', 'update', '--init', '--recursive'], { cwd: gitRoot });
|
|
78
|
+
const checkedOutSubmodulePaths = [];
|
|
79
|
+
for (const submodulePath of submodulePaths) {
|
|
80
|
+
const absoluteSubmodulePath = path.resolve(gitRoot, submodulePath);
|
|
81
|
+
await checkoutBranch(branchName, absoluteSubmodulePath);
|
|
82
|
+
checkedOutSubmodulePaths.push(submodulePath);
|
|
83
|
+
const nestedSubmodulePaths = await setupSubmodulesForBranch(absoluteSubmodulePath, branchName);
|
|
84
|
+
checkedOutSubmodulePaths.push(...nestedSubmodulePaths.map((nestedSubmodulePath) => path.join(submodulePath, nestedSubmodulePath)));
|
|
85
|
+
}
|
|
86
|
+
return checkedOutSubmodulePaths;
|
|
87
|
+
}
|
|
25
88
|
export async function listWorktrees(gitRoot) {
|
|
26
89
|
try {
|
|
27
90
|
const { stdout } = await execa('git', ['worktree', 'list', '--porcelain'], { cwd: gitRoot });
|
|
@@ -81,7 +144,9 @@ export async function removeWorktree(worktreePath, gitRoot) {
|
|
|
81
144
|
}
|
|
82
145
|
export async function getAllBranches(gitRoot) {
|
|
83
146
|
try {
|
|
84
|
-
const { stdout } = await execa('git', ['branch', '-a', '--format=%(refname:short)'], {
|
|
147
|
+
const { stdout } = await execa('git', ['branch', '-a', '--format=%(refname:short)'], {
|
|
148
|
+
cwd: gitRoot,
|
|
149
|
+
});
|
|
85
150
|
return stdout.split('\n').filter(Boolean);
|
|
86
151
|
}
|
|
87
152
|
catch {
|
package/dist/utils/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcadam/worktree",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "A CLI tool for managing Git worktrees across multiple repositories",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"type": "module",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"engines": {
|
|
62
62
|
"node": ">=18.0.0"
|
|
63
63
|
},
|
|
64
|
-
"packageManager": "pnpm@
|
|
64
|
+
"packageManager": "pnpm@11.1.3",
|
|
65
65
|
"files": [
|
|
66
66
|
"dist",
|
|
67
67
|
"bin"
|