git-easy-worktree 1.1.3 → 1.1.4
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 +56 -3
- package/dist/index.js +46 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,21 +18,64 @@ npm link
|
|
|
18
18
|
## Usage
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
git-wt [repo-url] [branch-name] [options]
|
|
21
|
+
git-wt [repo-url] [branch-name ...] [options]
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
If `repo-url` or
|
|
24
|
+
If `repo-url` or branch names are missing, the CLI will prompt you to enter them interactively.
|
|
25
|
+
|
|
26
|
+
You can provide multiple branch names in either of these formats:
|
|
27
|
+
|
|
28
|
+
- Space-separated: `git-wt <repo-url> dev test release`
|
|
29
|
+
- Comma-separated: `git-wt <repo-url> "dev,test,release"`
|
|
25
30
|
|
|
26
31
|
### Options
|
|
27
32
|
|
|
28
33
|
- `-d, --dir <directory>`: Base directory for worktrees (default: current directory)
|
|
29
34
|
|
|
35
|
+
### Input modes
|
|
36
|
+
|
|
37
|
+
- Full args: `git-wt <repo-url> <branch...>`
|
|
38
|
+
- Partial args: `git-wt <repo-url>` (CLI prompts for branches)
|
|
39
|
+
- No args: `git-wt` (CLI prompts for repo URL and branches)
|
|
40
|
+
|
|
41
|
+
> In non-interactive mode (for example CI), you must pass both repo URL and branch names in arguments.
|
|
42
|
+
|
|
43
|
+
### Branch parsing rules
|
|
44
|
+
|
|
45
|
+
- Supports both separators: spaces and commas
|
|
46
|
+
- Trims spaces automatically
|
|
47
|
+
- De-duplicates repeated branch names
|
|
48
|
+
- Keeps the input order for creation
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git-wt <repo-url> "dev, test dev release"
|
|
54
|
+
# => creates: dev, test, release
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### What the command does
|
|
58
|
+
|
|
59
|
+
1. Resolves repo directory name from URL
|
|
60
|
+
2. Creates/updates a local bare repository at `<base-dir>/<repo>/.bare`
|
|
61
|
+
3. Creates one worktree directory per branch at `<base-dir>/<repo>/<branch>`
|
|
62
|
+
4. If a branch does not exist in remote, creates a new local branch automatically
|
|
63
|
+
|
|
30
64
|
### Example
|
|
31
65
|
|
|
32
66
|
```bash
|
|
33
67
|
# Create a worktree for the 'master' branch of Hello-World
|
|
34
68
|
git-wt https://github.com/octocat/Hello-World.git master
|
|
35
69
|
|
|
70
|
+
# Create worktrees for multiple branches
|
|
71
|
+
git-wt https://github.com/octocat/Hello-World.git dev test release
|
|
72
|
+
|
|
73
|
+
# Create worktrees using comma-separated branches
|
|
74
|
+
git-wt https://github.com/octocat/Hello-World.git "feature/a,feature/b"
|
|
75
|
+
|
|
76
|
+
# Provide URL only, then input branches interactively
|
|
77
|
+
git-wt https://github.com/octocat/Hello-World.git
|
|
78
|
+
|
|
36
79
|
# Start interactive input mode
|
|
37
80
|
git-wt
|
|
38
81
|
|
|
@@ -40,12 +83,22 @@ git-wt
|
|
|
40
83
|
# ./Hello-World/
|
|
41
84
|
# .bare/ (Bare repository)
|
|
42
85
|
# master/ (Worktree)
|
|
86
|
+
# dev/ (Worktree, if requested)
|
|
43
87
|
```
|
|
44
88
|
|
|
89
|
+
## Troubleshooting
|
|
90
|
+
|
|
91
|
+
- `Missing required arguments in non-interactive mode`
|
|
92
|
+
Pass both URL and branch names directly, for example:
|
|
93
|
+
`git-wt https://github.com/octocat/Hello-World.git main`
|
|
94
|
+
|
|
95
|
+
- `Worktree path ... already exists`
|
|
96
|
+
The target branch folder already exists in base dir. Use a different branch name or remove the existing folder first.
|
|
97
|
+
|
|
45
98
|
## Development
|
|
46
99
|
|
|
47
100
|
```bash
|
|
48
101
|
npm install
|
|
49
|
-
npm run dev -- <url> <branch
|
|
102
|
+
npm run dev -- <url> <branch...>
|
|
50
103
|
npm run build
|
|
51
104
|
```
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,16 @@ const resolveRepoName = (url) => {
|
|
|
32
32
|
}
|
|
33
33
|
return repoName;
|
|
34
34
|
};
|
|
35
|
+
const splitBranchInput = (value) => value
|
|
36
|
+
.split(/[,\s]+/)
|
|
37
|
+
.map((branch) => branch.trim())
|
|
38
|
+
.filter(Boolean);
|
|
39
|
+
const normalizeBranches = (branchArgs) => {
|
|
40
|
+
if (!branchArgs) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
return Array.from(new Set(branchArgs.flatMap(splitBranchInput)));
|
|
44
|
+
};
|
|
35
45
|
const promptRequiredValue = async (label) => {
|
|
36
46
|
const rl = createInterface({
|
|
37
47
|
input: process.stdin,
|
|
@@ -50,26 +60,36 @@ const promptRequiredValue = async (label) => {
|
|
|
50
60
|
rl.close();
|
|
51
61
|
}
|
|
52
62
|
};
|
|
53
|
-
const
|
|
63
|
+
const promptRequiredBranches = async () => {
|
|
64
|
+
while (true) {
|
|
65
|
+
const value = await promptRequiredValue('Enter branch name(s), separated by comma or space');
|
|
66
|
+
const branches = normalizeBranches([value]);
|
|
67
|
+
if (branches.length > 0) {
|
|
68
|
+
return branches;
|
|
69
|
+
}
|
|
70
|
+
console.log(chalk.yellow('At least one branch name is required.'));
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const resolveInputs = async (urlArg, branchArgs, dirArg) => {
|
|
54
74
|
let url = urlArg?.trim();
|
|
55
|
-
let
|
|
75
|
+
let branches = normalizeBranches(branchArgs);
|
|
56
76
|
const dir = dirArg.trim() || process.cwd();
|
|
57
|
-
if (!url ||
|
|
77
|
+
if (!url || branches.length === 0) {
|
|
58
78
|
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
59
|
-
throw new Error('Missing required arguments in non-interactive mode. Usage: git-wt <repo-url> <branch-name
|
|
79
|
+
throw new Error('Missing required arguments in non-interactive mode. Usage: git-wt <repo-url> <branch-name...> [options]');
|
|
60
80
|
}
|
|
61
81
|
console.log(chalk.cyan('Missing arguments, entering interactive input mode.'));
|
|
62
82
|
if (!url) {
|
|
63
83
|
url = await promptRequiredValue('Enter Git repository URL');
|
|
64
84
|
}
|
|
65
|
-
if (
|
|
66
|
-
|
|
85
|
+
if (branches.length === 0) {
|
|
86
|
+
branches = await promptRequiredBranches();
|
|
67
87
|
}
|
|
68
88
|
}
|
|
69
|
-
if (!url ||
|
|
70
|
-
throw new Error('Usage: git-wt <repo-url> <branch-name
|
|
89
|
+
if (!url || branches.length === 0) {
|
|
90
|
+
throw new Error('Usage: git-wt <repo-url> <branch-name...> [options]');
|
|
71
91
|
}
|
|
72
|
-
return { url,
|
|
92
|
+
return { url, branches, dir };
|
|
73
93
|
};
|
|
74
94
|
const ensureBareRepository = async (url, bareRepoPath, spinner) => {
|
|
75
95
|
const git = simpleGit();
|
|
@@ -130,28 +150,36 @@ const run = async () => {
|
|
|
130
150
|
printBanner();
|
|
131
151
|
program
|
|
132
152
|
.name('git-wt')
|
|
133
|
-
.description('A CLI tool to create git worktrees from a repository URL and branch name')
|
|
153
|
+
.description('A CLI tool to create git worktrees from a repository URL and branch name(s)')
|
|
134
154
|
.version(version)
|
|
135
155
|
.argument('[url]', 'Git repository URL')
|
|
136
|
-
.argument('[
|
|
156
|
+
.argument('[branches...]', 'Branch name(s) to checkout')
|
|
137
157
|
.option('-d, --dir <directory>', 'Base directory for worktrees', process.cwd())
|
|
138
|
-
.action(async (urlArg,
|
|
158
|
+
.action(async (urlArg, branchArgs, options) => {
|
|
139
159
|
const spinner = ora();
|
|
140
160
|
try {
|
|
141
|
-
const { url,
|
|
161
|
+
const { url, branches, dir } = await resolveInputs(urlArg, branchArgs, options.dir);
|
|
142
162
|
const repoName = resolveRepoName(url);
|
|
143
163
|
const baseDir = path.resolve(dir);
|
|
144
164
|
const repoDir = path.join(baseDir, repoName);
|
|
145
165
|
const bareRepoPath = path.join(repoDir, '.bare');
|
|
146
|
-
const
|
|
166
|
+
const [firstBranch] = branches;
|
|
167
|
+
if (!firstBranch) {
|
|
168
|
+
throw new Error('No branch names were provided.');
|
|
169
|
+
}
|
|
147
170
|
await fs.ensureDir(repoDir);
|
|
148
171
|
await ensureBareRepository(url, bareRepoPath, spinner);
|
|
149
|
-
|
|
150
|
-
const
|
|
172
|
+
const worktreeDetails = [];
|
|
173
|
+
for (const branch of branches) {
|
|
174
|
+
const worktreePath = path.join(repoDir, branch);
|
|
175
|
+
await createWorktree(bareRepoPath, worktreePath, branch, spinner);
|
|
176
|
+
worktreeDetails.push(`- ${chalk.cyan(branch)}: ${chalk.cyan(worktreePath)}`);
|
|
177
|
+
}
|
|
178
|
+
const relativeWorktreePath = path.relative(process.cwd(), path.join(repoDir, firstBranch)) || '.';
|
|
151
179
|
console.log('\n' +
|
|
152
180
|
boxen(chalk.green('🎉 All done! \n\n') +
|
|
153
|
-
`📂
|
|
154
|
-
`🌿
|
|
181
|
+
`📂 Repository: ${chalk.cyan(repoDir)}\n` +
|
|
182
|
+
`🌿 Worktrees:\n${worktreeDetails.join('\n')}\n\n` +
|
|
155
183
|
chalk.dim(`cd ${relativeWorktreePath}`), { padding: 1, borderStyle: 'round', borderColor: 'green' }));
|
|
156
184
|
}
|
|
157
185
|
catch (error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQzD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AACtE,MAAM,uBAAuB,GAAG,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;AAEjF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,WAAW,GAAG,GAAG,EAAE;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAU,EAAE;IAChD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE;IAC9C,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAa,EAAmB,EAAE;IACnE,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EACzB,MAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|