gitgrip 0.3.1 → 0.4.1
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 +44 -0
- package/assets/griptree-concept.svg +118 -0
- package/assets/griptree-workflow.svg +79 -0
- package/dist/commands/commit.d.ts +1 -0
- package/dist/commands/commit.d.ts.map +1 -1
- package/dist/commands/commit.js +19 -17
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/push.d.ts +1 -0
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +27 -21
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +11 -10
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/tree.d.ts +27 -0
- package/dist/commands/tree.d.ts.map +1 -0
- package/dist/commands/tree.js +369 -0
- package/dist/commands/tree.js.map +1 -0
- package/dist/index.js +61 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/git.d.ts +30 -1
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +50 -0
- package/dist/lib/git.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -118,6 +118,9 @@ gr sync
|
|
|
118
118
|
| `gr pr merge` | Merge all linked PRs |
|
|
119
119
|
| `gr repo add <url>` | Add a new repository to workspace |
|
|
120
120
|
| `gr forall -c "cmd"` | Run command in each repo |
|
|
121
|
+
| `gr tree add <branch>` | Create a worktree-based workspace |
|
|
122
|
+
| `gr tree list` | List all griptrees |
|
|
123
|
+
| `gr tree remove <branch>` | Remove a griptree |
|
|
121
124
|
|
|
122
125
|
### Command Details
|
|
123
126
|
|
|
@@ -294,6 +297,47 @@ repos:
|
|
|
294
297
|
baseUrl: https://gitlab.company.com
|
|
295
298
|
```
|
|
296
299
|
|
|
300
|
+
## Griptrees (Multi-Branch Workspaces)
|
|
301
|
+
|
|
302
|
+
Work on multiple branches simultaneously without switching. Griptrees use git worktrees to create parallel workspace directories.
|
|
303
|
+
|
|
304
|
+
<p align="center">
|
|
305
|
+
<img src="assets/griptree-concept.svg" alt="Griptrees Concept" width="700">
|
|
306
|
+
</p>
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# Create a griptree for a feature branch
|
|
310
|
+
gr tree add feat/new-feature
|
|
311
|
+
|
|
312
|
+
# Creates a sibling directory with all repos on that branch:
|
|
313
|
+
# ../feat-new-feature/
|
|
314
|
+
# ├── frontend/
|
|
315
|
+
# ├── backend/
|
|
316
|
+
# └── shared/
|
|
317
|
+
|
|
318
|
+
# Work in the griptree
|
|
319
|
+
cd ../feat-new-feature
|
|
320
|
+
gr status
|
|
321
|
+
|
|
322
|
+
# List all griptrees
|
|
323
|
+
gr tree list
|
|
324
|
+
|
|
325
|
+
# Lock to prevent accidental removal
|
|
326
|
+
gr tree lock feat/new-feature
|
|
327
|
+
|
|
328
|
+
# Remove when done (branches are preserved)
|
|
329
|
+
gr tree remove feat/new-feature
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
<p align="center">
|
|
333
|
+
<img src="assets/griptree-workflow.svg" alt="Griptree Workflow" width="700">
|
|
334
|
+
</p>
|
|
335
|
+
|
|
336
|
+
**Benefits:**
|
|
337
|
+
- No branch switching required
|
|
338
|
+
- Shared git objects (fast creation, minimal disk usage)
|
|
339
|
+
- Independent working directories
|
|
340
|
+
|
|
297
341
|
## Shorthand
|
|
298
342
|
|
|
299
343
|
Use `gr` as the primary command:
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 500">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="mainGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#10B981;stop-opacity:1" />
|
|
5
|
+
<stop offset="100%" style="stop-color:#059669;stop-opacity:1" />
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<linearGradient id="treeGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
8
|
+
<stop offset="0%" style="stop-color:#3B82F6;stop-opacity:1" />
|
|
9
|
+
<stop offset="100%" style="stop-color:#1D4ED8;stop-opacity:1" />
|
|
10
|
+
</linearGradient>
|
|
11
|
+
<linearGradient id="repoGrad" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
12
|
+
<stop offset="0%" style="stop-color:#374151;stop-opacity:1" />
|
|
13
|
+
<stop offset="100%" style="stop-color:#1F2937;stop-opacity:1" />
|
|
14
|
+
</linearGradient>
|
|
15
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
16
|
+
<feDropShadow dx="2" dy="4" stdDeviation="4" flood-opacity="0.2"/>
|
|
17
|
+
</filter>
|
|
18
|
+
</defs>
|
|
19
|
+
|
|
20
|
+
<!-- Background -->
|
|
21
|
+
<rect width="800" height="500" fill="#0F172A"/>
|
|
22
|
+
|
|
23
|
+
<!-- Title -->
|
|
24
|
+
<text x="400" y="45" font-family="system-ui, -apple-system, sans-serif" font-size="28" font-weight="bold" fill="#F8FAFC" text-anchor="middle">Griptrees: Multi-Branch Workspaces</text>
|
|
25
|
+
<text x="400" y="75" font-family="system-ui, -apple-system, sans-serif" font-size="14" fill="#94A3B8" text-anchor="middle">Work on multiple features simultaneously without switching branches</text>
|
|
26
|
+
|
|
27
|
+
<!-- Main Workspace Box -->
|
|
28
|
+
<g transform="translate(50, 110)">
|
|
29
|
+
<rect x="0" y="0" width="220" height="280" rx="12" fill="url(#mainGrad)" filter="url(#shadow)"/>
|
|
30
|
+
<text x="110" y="30" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="white" text-anchor="middle">Main Workspace</text>
|
|
31
|
+
<text x="110" y="50" font-family="monospace" font-size="12" fill="#D1FAE5" text-anchor="middle">branch: main</text>
|
|
32
|
+
|
|
33
|
+
<!-- Repos in main -->
|
|
34
|
+
<g transform="translate(20, 70)">
|
|
35
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
36
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#10B981">frontend/</text>
|
|
37
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">.git/objects (shared)</text>
|
|
38
|
+
</g>
|
|
39
|
+
<g transform="translate(20, 125)">
|
|
40
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
41
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#10B981">backend/</text>
|
|
42
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">.git/objects (shared)</text>
|
|
43
|
+
</g>
|
|
44
|
+
<g transform="translate(20, 180)">
|
|
45
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
46
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#10B981">shared/</text>
|
|
47
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">.git/objects (shared)</text>
|
|
48
|
+
</g>
|
|
49
|
+
</g>
|
|
50
|
+
|
|
51
|
+
<!-- Griptree 1 -->
|
|
52
|
+
<g transform="translate(290, 110)">
|
|
53
|
+
<rect x="0" y="0" width="220" height="280" rx="12" fill="url(#treeGrad)" filter="url(#shadow)"/>
|
|
54
|
+
<text x="110" y="30" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="white" text-anchor="middle">Griptree: feat/auth</text>
|
|
55
|
+
<text x="110" y="50" font-family="monospace" font-size="12" fill="#BFDBFE" text-anchor="middle">branch: feat/auth</text>
|
|
56
|
+
|
|
57
|
+
<!-- Repos as worktrees -->
|
|
58
|
+
<g transform="translate(20, 70)">
|
|
59
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
60
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">frontend/</text>
|
|
61
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
62
|
+
</g>
|
|
63
|
+
<g transform="translate(20, 125)">
|
|
64
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
65
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">backend/</text>
|
|
66
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
67
|
+
</g>
|
|
68
|
+
<g transform="translate(20, 180)">
|
|
69
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
70
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">shared/</text>
|
|
71
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
72
|
+
</g>
|
|
73
|
+
</g>
|
|
74
|
+
|
|
75
|
+
<!-- Griptree 2 -->
|
|
76
|
+
<g transform="translate(530, 110)">
|
|
77
|
+
<rect x="0" y="0" width="220" height="280" rx="12" fill="url(#treeGrad)" filter="url(#shadow)"/>
|
|
78
|
+
<text x="110" y="30" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="bold" fill="white" text-anchor="middle">Griptree: feat/api</text>
|
|
79
|
+
<text x="110" y="50" font-family="monospace" font-size="12" fill="#BFDBFE" text-anchor="middle">branch: feat/api</text>
|
|
80
|
+
|
|
81
|
+
<!-- Repos as worktrees -->
|
|
82
|
+
<g transform="translate(20, 70)">
|
|
83
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
84
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">frontend/</text>
|
|
85
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
86
|
+
</g>
|
|
87
|
+
<g transform="translate(20, 125)">
|
|
88
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
89
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">backend/</text>
|
|
90
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
91
|
+
</g>
|
|
92
|
+
<g transform="translate(20, 180)">
|
|
93
|
+
<rect x="0" y="0" width="180" height="45" rx="6" fill="url(#repoGrad)"/>
|
|
94
|
+
<text x="15" y="20" font-family="monospace" font-size="11" fill="#60A5FA">shared/</text>
|
|
95
|
+
<text x="15" y="35" font-family="monospace" font-size="10" fill="#6B7280">worktree (instant)</text>
|
|
96
|
+
</g>
|
|
97
|
+
</g>
|
|
98
|
+
|
|
99
|
+
<!-- Connecting arrows showing shared objects -->
|
|
100
|
+
<defs>
|
|
101
|
+
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
102
|
+
<polygon points="0 0, 10 3.5, 0 7" fill="#10B981"/>
|
|
103
|
+
</marker>
|
|
104
|
+
</defs>
|
|
105
|
+
|
|
106
|
+
<!-- Curved lines from main to griptrees -->
|
|
107
|
+
<path d="M 270 250 Q 280 200 290 250" stroke="#10B981" stroke-width="2" fill="none" stroke-dasharray="5,5"/>
|
|
108
|
+
<path d="M 270 250 Q 400 150 530 250" stroke="#10B981" stroke-width="2" fill="none" stroke-dasharray="5,5"/>
|
|
109
|
+
|
|
110
|
+
<!-- Legend -->
|
|
111
|
+
<g transform="translate(50, 420)">
|
|
112
|
+
<rect x="0" y="0" width="700" height="65" rx="8" fill="#1E293B"/>
|
|
113
|
+
<text x="20" y="25" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="bold" fill="#F8FAFC">Benefits:</text>
|
|
114
|
+
<text x="20" y="48" font-family="system-ui, -apple-system, sans-serif" font-size="12" fill="#94A3B8">No branch switching needed</text>
|
|
115
|
+
<text x="200" y="48" font-family="system-ui, -apple-system, sans-serif" font-size="12" fill="#94A3B8">Shared git objects (minimal disk)</text>
|
|
116
|
+
<text x="430" y="48" font-family="system-ui, -apple-system, sans-serif" font-size="12" fill="#94A3B8">Instant creation via git worktree</text>
|
|
117
|
+
</g>
|
|
118
|
+
</svg>
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 300">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="cmdGrad" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#10B981"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#059669"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<filter id="glow">
|
|
8
|
+
<feGaussianBlur stdDeviation="2" result="coloredBlur"/>
|
|
9
|
+
<feMerge>
|
|
10
|
+
<feMergeNode in="coloredBlur"/>
|
|
11
|
+
<feMergeNode in="SourceGraphic"/>
|
|
12
|
+
</feMerge>
|
|
13
|
+
</filter>
|
|
14
|
+
</defs>
|
|
15
|
+
|
|
16
|
+
<!-- Background -->
|
|
17
|
+
<rect width="800" height="300" fill="#0F172A"/>
|
|
18
|
+
|
|
19
|
+
<!-- Title -->
|
|
20
|
+
<text x="400" y="35" font-family="system-ui, -apple-system, sans-serif" font-size="20" font-weight="bold" fill="#F8FAFC" text-anchor="middle">Griptree Workflow</text>
|
|
21
|
+
|
|
22
|
+
<!-- Step 1: Create -->
|
|
23
|
+
<g transform="translate(60, 70)">
|
|
24
|
+
<rect x="0" y="0" width="180" height="90" rx="10" fill="#1E293B" stroke="#10B981" stroke-width="2"/>
|
|
25
|
+
<text x="90" y="25" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#10B981" text-anchor="middle">1. Create</text>
|
|
26
|
+
<text x="90" y="50" font-family="monospace" font-size="11" fill="#94A3B8" text-anchor="middle">gr tree add</text>
|
|
27
|
+
<text x="90" y="68" font-family="monospace" font-size="11" fill="#60A5FA" text-anchor="middle">feat/my-feature</text>
|
|
28
|
+
</g>
|
|
29
|
+
|
|
30
|
+
<!-- Arrow 1 -->
|
|
31
|
+
<path d="M 250 115 L 300 115" stroke="#10B981" stroke-width="2" marker-end="url(#arrow)"/>
|
|
32
|
+
<defs>
|
|
33
|
+
<marker id="arrow" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
|
|
34
|
+
<path d="M 0 0 L 10 5 L 0 10 Z" fill="#10B981"/>
|
|
35
|
+
</marker>
|
|
36
|
+
</defs>
|
|
37
|
+
|
|
38
|
+
<!-- Step 2: Work -->
|
|
39
|
+
<g transform="translate(310, 70)">
|
|
40
|
+
<rect x="0" y="0" width="180" height="90" rx="10" fill="#1E293B" stroke="#3B82F6" stroke-width="2"/>
|
|
41
|
+
<text x="90" y="25" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#3B82F6" text-anchor="middle">2. Work</text>
|
|
42
|
+
<text x="90" y="50" font-family="monospace" font-size="11" fill="#94A3B8" text-anchor="middle">cd ../feat-my-feature</text>
|
|
43
|
+
<text x="90" y="68" font-family="monospace" font-size="11" fill="#94A3B8" text-anchor="middle">gr status / commit / push</text>
|
|
44
|
+
</g>
|
|
45
|
+
|
|
46
|
+
<!-- Arrow 2 -->
|
|
47
|
+
<path d="M 500 115 L 550 115" stroke="#3B82F6" stroke-width="2" marker-end="url(#arrow2)"/>
|
|
48
|
+
<defs>
|
|
49
|
+
<marker id="arrow2" markerWidth="10" markerHeight="10" refX="8" refY="5" orient="auto">
|
|
50
|
+
<path d="M 0 0 L 10 5 L 0 10 Z" fill="#3B82F6"/>
|
|
51
|
+
</marker>
|
|
52
|
+
</defs>
|
|
53
|
+
|
|
54
|
+
<!-- Step 3: Remove -->
|
|
55
|
+
<g transform="translate(560, 70)">
|
|
56
|
+
<rect x="0" y="0" width="180" height="90" rx="10" fill="#1E293B" stroke="#F59E0B" stroke-width="2"/>
|
|
57
|
+
<text x="90" y="25" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="bold" fill="#F59E0B" text-anchor="middle">3. Cleanup</text>
|
|
58
|
+
<text x="90" y="50" font-family="monospace" font-size="11" fill="#94A3B8" text-anchor="middle">gr tree remove</text>
|
|
59
|
+
<text x="90" y="68" font-family="monospace" font-size="11" fill="#60A5FA" text-anchor="middle">feat/my-feature</text>
|
|
60
|
+
</g>
|
|
61
|
+
|
|
62
|
+
<!-- Commands reference -->
|
|
63
|
+
<g transform="translate(60, 190)">
|
|
64
|
+
<rect x="0" y="0" width="680" height="90" rx="8" fill="#1E293B"/>
|
|
65
|
+
<text x="20" y="25" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="bold" fill="#F8FAFC">Quick Reference:</text>
|
|
66
|
+
|
|
67
|
+
<text x="20" y="50" font-family="monospace" font-size="11" fill="#10B981">gr tree add <branch></text>
|
|
68
|
+
<text x="200" y="50" font-family="system-ui, sans-serif" font-size="11" fill="#6B7280">Create parallel workspace</text>
|
|
69
|
+
|
|
70
|
+
<text x="20" y="70" font-family="monospace" font-size="11" fill="#10B981">gr tree list</text>
|
|
71
|
+
<text x="200" y="70" font-family="system-ui, sans-serif" font-size="11" fill="#6B7280">Show all griptrees</text>
|
|
72
|
+
|
|
73
|
+
<text x="380" y="50" font-family="monospace" font-size="11" fill="#10B981">gr tree lock <branch></text>
|
|
74
|
+
<text x="560" y="50" font-family="system-ui, sans-serif" font-size="11" fill="#6B7280">Protect from removal</text>
|
|
75
|
+
|
|
76
|
+
<text x="380" y="70" font-family="monospace" font-size="11" fill="#10B981">gr tree remove <branch></text>
|
|
77
|
+
<text x="590" y="70" font-family="system-ui, sans-serif" font-size="11" fill="#6B7280">Remove griptree</text>
|
|
78
|
+
</g>
|
|
79
|
+
</svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAuCD;;;GAGG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFlE"}
|
package/dist/commands/commit.js
CHANGED
|
@@ -26,6 +26,7 @@ async function commitChanges(repoPath, message) {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Commit staged changes across all repositories
|
|
29
|
+
* Uses two-phase parallel approach for better performance
|
|
29
30
|
*/
|
|
30
31
|
export async function commit(options) {
|
|
31
32
|
const { message, all = false } = options;
|
|
@@ -40,13 +41,12 @@ export async function commit(options) {
|
|
|
40
41
|
if (manifestInfo && await isGitRepo(manifestInfo.absolutePath)) {
|
|
41
42
|
repos = [...repos, manifestInfo];
|
|
42
43
|
}
|
|
43
|
-
const results = [];
|
|
44
|
-
let hasChanges = false;
|
|
45
44
|
console.log(chalk.blue('Checking repositories for changes...\n'));
|
|
46
|
-
|
|
45
|
+
// Phase 1: Check status and optionally stage changes in parallel
|
|
46
|
+
const repoInfoResults = await Promise.all(repos.map(async (repo) => {
|
|
47
47
|
const exists = await pathExists(repo.absolutePath);
|
|
48
48
|
if (!exists) {
|
|
49
|
-
|
|
49
|
+
return null;
|
|
50
50
|
}
|
|
51
51
|
// If --all flag, stage all changes first
|
|
52
52
|
if (all) {
|
|
@@ -57,29 +57,31 @@ export async function commit(options) {
|
|
|
57
57
|
}
|
|
58
58
|
// Check if there are staged changes
|
|
59
59
|
const hasStaged = await hasStagedChanges(repo.absolutePath);
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
return { repo, hasStaged };
|
|
61
|
+
}));
|
|
62
|
+
// Filter to repos with staged changes
|
|
63
|
+
const reposToCommit = repoInfoResults.filter((info) => info !== null && info.hasStaged);
|
|
64
|
+
if (reposToCommit.length === 0) {
|
|
65
|
+
console.log(chalk.yellow('No staged changes to commit in any repository.'));
|
|
66
|
+
if (!all) {
|
|
67
|
+
console.log(chalk.dim('Use --all to stage and commit all changes, or stage changes with git add first.'));
|
|
62
68
|
}
|
|
63
|
-
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Phase 2: Commit in parallel
|
|
72
|
+
const results = await Promise.all(reposToCommit.map(async ({ repo }) => {
|
|
64
73
|
const spinner = ora(`Committing ${repo.name}...`).start();
|
|
65
74
|
try {
|
|
66
75
|
await commitChanges(repo.absolutePath, message);
|
|
67
76
|
spinner.succeed(`${repo.name}: committed`);
|
|
68
|
-
|
|
77
|
+
return { repo, success: true, committed: true };
|
|
69
78
|
}
|
|
70
79
|
catch (error) {
|
|
71
80
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
72
81
|
spinner.fail(`${repo.name}: ${errorMsg}`);
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (!hasChanges) {
|
|
77
|
-
console.log(chalk.yellow('No staged changes to commit in any repository.'));
|
|
78
|
-
if (!all) {
|
|
79
|
-
console.log(chalk.dim('Use --all to stage and commit all changes, or stage changes with git add first.'));
|
|
82
|
+
return { repo, success: false, committed: false, error: errorMsg };
|
|
80
83
|
}
|
|
81
|
-
|
|
82
|
-
}
|
|
84
|
+
}));
|
|
83
85
|
// Summary
|
|
84
86
|
console.log('');
|
|
85
87
|
const committed = results.filter((r) => r.committed).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAe7F;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC5D,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA6CD;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFnE"}
|
package/dist/commands/push.js
CHANGED
|
@@ -32,6 +32,7 @@ async function hasUpstream(repoPath) {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Push current branch to remote across all repositories
|
|
35
|
+
* Uses two-phase parallel approach for better performance
|
|
35
36
|
*/
|
|
36
37
|
export async function push(options = {}) {
|
|
37
38
|
const { setUpstream = false, force = false } = options;
|
|
@@ -42,24 +43,33 @@ export async function push(options = {}) {
|
|
|
42
43
|
if (manifestInfo && await isGitRepo(manifestInfo.absolutePath)) {
|
|
43
44
|
repos = [...repos, manifestInfo];
|
|
44
45
|
}
|
|
45
|
-
const results = [];
|
|
46
|
-
let hasCommits = false;
|
|
47
46
|
console.log(chalk.blue('Checking repositories for commits to push...\n'));
|
|
48
|
-
|
|
47
|
+
// Phase 1: Gather info in parallel
|
|
48
|
+
const repoInfoResults = await Promise.all(repos.map(async (repo) => {
|
|
49
49
|
const exists = await pathExists(repo.absolutePath);
|
|
50
50
|
if (!exists) {
|
|
51
|
-
|
|
51
|
+
return null;
|
|
52
52
|
}
|
|
53
|
-
const branch = await
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
const [branch, hasUpstreamConfigured, needsPush] = await Promise.all([
|
|
54
|
+
getCurrentBranch(repo.absolutePath),
|
|
55
|
+
hasUpstream(repo.absolutePath),
|
|
56
|
+
hasCommitsAheadOfRemote(repo.absolutePath),
|
|
57
|
+
]);
|
|
58
|
+
return { repo, branch, hasUpstreamConfigured, needsPush };
|
|
59
|
+
}));
|
|
60
|
+
// Filter out null results and repos that don't need pushing
|
|
61
|
+
const reposToPush = repoInfoResults.filter((info) => {
|
|
62
|
+
if (!info)
|
|
63
|
+
return false;
|
|
64
|
+
const needsUpstreamPush = !info.hasUpstreamConfigured && setUpstream;
|
|
65
|
+
return info.needsPush || needsUpstreamPush;
|
|
66
|
+
});
|
|
67
|
+
if (reposToPush.length === 0) {
|
|
68
|
+
console.log(chalk.yellow('No commits to push in any repository.'));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Phase 2: Push repos in parallel
|
|
72
|
+
const results = await Promise.all(reposToPush.map(async ({ repo, branch, hasUpstreamConfigured }) => {
|
|
63
73
|
const spinner = ora(`Pushing ${repo.name} (${branch})...`).start();
|
|
64
74
|
try {
|
|
65
75
|
const git = getGitInstance(repo.absolutePath);
|
|
@@ -75,18 +85,14 @@ export async function push(options = {}) {
|
|
|
75
85
|
}
|
|
76
86
|
await git.push(pushOptions);
|
|
77
87
|
spinner.succeed(`${repo.name} (${chalk.cyan(branch)}): pushed`);
|
|
78
|
-
|
|
88
|
+
return { repo, success: true, pushed: true, branch };
|
|
79
89
|
}
|
|
80
90
|
catch (error) {
|
|
81
91
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
82
92
|
spinner.fail(`${repo.name}: ${errorMsg}`);
|
|
83
|
-
|
|
93
|
+
return { repo, success: false, pushed: false, branch, error: errorMsg };
|
|
84
94
|
}
|
|
85
|
-
}
|
|
86
|
-
if (!hasCommits) {
|
|
87
|
-
console.log(chalk.yellow('No commits to push in any repository.'));
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
95
|
+
}));
|
|
90
96
|
// Summary
|
|
91
97
|
console.log('');
|
|
92
98
|
const pushed = results.filter((r) => r.pushed).length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAc,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAgBpG;;GAEG;AACH,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IACrD,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,QAAgB;IACzC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC;QAC7E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AASA,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoMnE"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -69,13 +69,12 @@ export async function sync(options = {}) {
|
|
|
69
69
|
const repos = getAllRepoInfo(updatedManifest, rootDir);
|
|
70
70
|
console.log(chalk.blue(`\nSyncing ${repos.length} repositories...\n`));
|
|
71
71
|
timing?.startPhase('sync repos');
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
// Sync all repos in parallel for better performance
|
|
73
|
+
const results = await Promise.all(repos.map(async (repo) => {
|
|
74
74
|
const exists = await pathExists(repo.absolutePath);
|
|
75
75
|
if (!exists) {
|
|
76
76
|
console.log(chalk.yellow(` ${repo.name}: not cloned (run 'gitgrip init <url>')`));
|
|
77
|
-
|
|
78
|
-
continue;
|
|
77
|
+
return { repo, success: false, error: 'not cloned' };
|
|
79
78
|
}
|
|
80
79
|
const spinner = ora(`${options.fetch ? 'Fetching' : 'Pulling'} ${repo.name}...`).start();
|
|
81
80
|
timing?.startPhase(repo.name);
|
|
@@ -89,27 +88,29 @@ export async function sync(options = {}) {
|
|
|
89
88
|
await pullLatest(repo.absolutePath);
|
|
90
89
|
spinner.succeed(`${repo.name} (${chalk.cyan(branch)}): pulled`);
|
|
91
90
|
}
|
|
92
|
-
results.push({ repo, success: true, branch });
|
|
93
91
|
timing?.endPhase(repo.name);
|
|
92
|
+
return { repo, success: true, branch };
|
|
94
93
|
}
|
|
95
94
|
catch (error) {
|
|
96
95
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
97
96
|
// Check for common errors
|
|
98
97
|
if (errorMsg.includes('uncommitted changes')) {
|
|
99
98
|
spinner.warn(`${repo.name}: has uncommitted changes, skipping`);
|
|
100
|
-
|
|
99
|
+
timing?.endPhase(repo.name);
|
|
100
|
+
return { repo, success: false, error: 'uncommitted changes' };
|
|
101
101
|
}
|
|
102
102
|
else if (errorMsg.includes('diverged')) {
|
|
103
103
|
spinner.warn(`${repo.name}: branch has diverged from remote`);
|
|
104
|
-
|
|
104
|
+
timing?.endPhase(repo.name);
|
|
105
|
+
return { repo, success: false, error: 'diverged' };
|
|
105
106
|
}
|
|
106
107
|
else {
|
|
107
108
|
spinner.fail(`${repo.name}: ${errorMsg}`);
|
|
108
|
-
|
|
109
|
+
timing?.endPhase(repo.name);
|
|
110
|
+
return { repo, success: false, error: errorMsg };
|
|
109
111
|
}
|
|
110
|
-
timing?.endPhase(repo.name);
|
|
111
112
|
}
|
|
112
|
-
}
|
|
113
|
+
}));
|
|
113
114
|
timing?.endPhase('sync repos');
|
|
114
115
|
// Summary
|
|
115
116
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface TreeAddOptions {
|
|
2
|
+
path?: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Create a tree (worktree-based workspace) for a branch
|
|
6
|
+
*/
|
|
7
|
+
export declare function treeAdd(branch: string, options?: TreeAddOptions): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* List all trees in the workspace
|
|
10
|
+
*/
|
|
11
|
+
export declare function treeList(): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Remove a tree
|
|
14
|
+
*/
|
|
15
|
+
export declare function treeRemove(branch: string, options?: {
|
|
16
|
+
force?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Lock a tree to prevent accidental removal
|
|
20
|
+
*/
|
|
21
|
+
export declare function treeLock(branch: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Unlock a tree
|
|
24
|
+
*/
|
|
25
|
+
export declare function treeUnlock(branch: string): Promise<void>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=tree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/commands/tree.ts"],"names":[],"mappings":"AAUA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuED;;GAEG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2HzF;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgF9C;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EjG;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9D"}
|