@camaradesuk/git-worktree-tools 1.1.1 → 1.2.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 +4 -4
- package/dist/cli/newpr.js +74 -1
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.js +44 -0
- package/dist/cli/newpr.test.js.map +1 -1
- package/dist/integration/newpr.integration.test.d.ts +2 -0
- package/dist/integration/newpr.integration.test.d.ts.map +1 -0
- package/dist/integration/newpr.integration.test.js +424 -0
- package/dist/integration/newpr.integration.test.js.map +1 -0
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.test.js +6 -6
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +1 -1
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/state-detection.d.ts.map +1 -1
- package/dist/lib/state-detection.js +5 -2
- package/dist/lib/state-detection.js.map +1 -1
- package/dist/lib/state-detection.test.js +37 -1
- package/dist/lib/state-detection.test.js.map +1 -1
- package/dist/lib/wtlink/link-configs.test.js +1 -1
- package/dist/lib/wtlink/link-configs.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll, beforeEach } from 'vitest';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
import * as git from '../lib/git.js';
|
|
7
|
+
import { analyzeGitState, detectScenario } from '../lib/state-detection.js';
|
|
8
|
+
import { executeStateAction, getBranchPoint } from '../lib/newpr/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Integration tests for newpr flow - specifically testing that uncommitted changes
|
|
11
|
+
* are correctly transferred to new branches created from origin/main.
|
|
12
|
+
*
|
|
13
|
+
* These tests verify the ACTUAL git behavior, not just mocked dependencies.
|
|
14
|
+
*/
|
|
15
|
+
describe('newpr integration - uncommitted changes transfer', () => {
|
|
16
|
+
let tempDir;
|
|
17
|
+
let mainRepoDir;
|
|
18
|
+
let bareRepoDir;
|
|
19
|
+
// Create temp directory structure with a bare repo to simulate origin
|
|
20
|
+
beforeAll(() => {
|
|
21
|
+
tempDir = fs.realpathSync.native(fs.mkdtempSync(path.join(os.tmpdir(), 'newpr-integration-test-')));
|
|
22
|
+
// Create a bare repo to act as origin
|
|
23
|
+
bareRepoDir = path.join(tempDir, 'origin.git');
|
|
24
|
+
fs.mkdirSync(bareRepoDir);
|
|
25
|
+
execSync('git init --bare', { cwd: bareRepoDir });
|
|
26
|
+
// Create the main working repo
|
|
27
|
+
mainRepoDir = path.join(tempDir, 'main-repo');
|
|
28
|
+
fs.mkdirSync(mainRepoDir);
|
|
29
|
+
execSync('git init', { cwd: mainRepoDir });
|
|
30
|
+
execSync('git config user.email "test@test.com"', { cwd: mainRepoDir });
|
|
31
|
+
execSync('git config user.name "Test User"', { cwd: mainRepoDir });
|
|
32
|
+
// Create initial commit
|
|
33
|
+
fs.writeFileSync(path.join(mainRepoDir, 'README.md'), '# Test Repo\n');
|
|
34
|
+
execSync('git add .', { cwd: mainRepoDir });
|
|
35
|
+
execSync('git commit -m "Initial commit"', { cwd: mainRepoDir });
|
|
36
|
+
// Rename branch to 'main' for consistency
|
|
37
|
+
execSync('git branch -M main', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
38
|
+
// Add origin and push
|
|
39
|
+
execSync(`git remote add origin "${bareRepoDir}"`, { cwd: mainRepoDir });
|
|
40
|
+
execSync('git push -u origin main', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
41
|
+
});
|
|
42
|
+
afterAll(() => {
|
|
43
|
+
if (tempDir) {
|
|
44
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
// Clean up any test branches first (before checkout to avoid errors)
|
|
49
|
+
const branchesToClean = [
|
|
50
|
+
'test-feature',
|
|
51
|
+
'test-feature-staged',
|
|
52
|
+
'test-feature-both',
|
|
53
|
+
'test-feature-behind',
|
|
54
|
+
'test-feature-existing-file',
|
|
55
|
+
'test-feature-full-flow',
|
|
56
|
+
'test-feature-from-head',
|
|
57
|
+
];
|
|
58
|
+
for (const branch of branchesToClean) {
|
|
59
|
+
try {
|
|
60
|
+
execSync(`git branch -D ${branch} 2>/dev/null`, {
|
|
61
|
+
cwd: mainRepoDir,
|
|
62
|
+
stdio: 'ignore',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Reset to clean state on main
|
|
70
|
+
execSync('git checkout main', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
71
|
+
execSync('git reset --hard origin/main', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
72
|
+
execSync('git clean -fd', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Create real ActionDeps using actual git operations
|
|
76
|
+
*/
|
|
77
|
+
function createRealDeps(cwd) {
|
|
78
|
+
return {
|
|
79
|
+
gitAdd: (addPath, cwdPath) => git.add(addPath, cwdPath ?? cwd),
|
|
80
|
+
gitStash: (options, cwdPath) => git.stash({ message: options.message, keepIndex: options.keepIndex }, cwdPath ?? cwd),
|
|
81
|
+
gitPush: (options, cwdPath) => git.push({ remote: options.remote, branch: options.branch, setUpstream: options.setUpstream }, cwdPath ?? cwd),
|
|
82
|
+
gitCommit: (options, cwdPath) => git.commit({ message: options.message, allowEmpty: options.allowEmpty }, cwdPath ?? cwd),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Helper to get the base branch name - we use 'main' in this test suite
|
|
87
|
+
*/
|
|
88
|
+
function getBaseBranch() {
|
|
89
|
+
return 'main';
|
|
90
|
+
}
|
|
91
|
+
describe('Scenario 2b: main_unstaged_same - unstaged changes on main', () => {
|
|
92
|
+
it('detects scenario correctly', () => {
|
|
93
|
+
const baseBranch = getBaseBranch();
|
|
94
|
+
// Create an unstaged file (new, untracked)
|
|
95
|
+
fs.mkdirSync(path.join(mainRepoDir, 'docs'), { recursive: true });
|
|
96
|
+
fs.writeFileSync(path.join(mainRepoDir, 'docs', 'AI-TOOLING-PLAN.md'), '# Plan\n');
|
|
97
|
+
const state = analyzeGitState(baseBranch, mainRepoDir);
|
|
98
|
+
const scenario = detectScenario(state);
|
|
99
|
+
expect(scenario).toBe('main_unstaged_same');
|
|
100
|
+
// Git may report 'docs/' for untracked directories
|
|
101
|
+
expect(state.unstagedFiles.some((f) => f.includes('docs'))).toBe(true);
|
|
102
|
+
});
|
|
103
|
+
it('commit_all action commits unstaged file to new branch from origin/main', () => {
|
|
104
|
+
const baseBranch = getBaseBranch();
|
|
105
|
+
const branchName = 'test-feature';
|
|
106
|
+
// Create an unstaged file (simulating the user's scenario)
|
|
107
|
+
fs.mkdirSync(path.join(mainRepoDir, 'docs'), { recursive: true });
|
|
108
|
+
fs.writeFileSync(path.join(mainRepoDir, 'docs', 'AI-TOOLING-PLAN.md'), '# Plan\n');
|
|
109
|
+
// Verify initial state
|
|
110
|
+
const initialState = analyzeGitState(baseBranch, mainRepoDir);
|
|
111
|
+
expect(detectScenario(initialState)).toBe('main_unstaged_same');
|
|
112
|
+
// Create the action: "Stage all and commit to the new PR branch"
|
|
113
|
+
const action = {
|
|
114
|
+
action: 'commit_all',
|
|
115
|
+
branchFrom: 'origin_main',
|
|
116
|
+
stashUnstaged: false,
|
|
117
|
+
};
|
|
118
|
+
// Execute the action (this stages files)
|
|
119
|
+
const deps = createRealDeps(mainRepoDir);
|
|
120
|
+
const actionResult = executeStateAction(action, 'Test feature', branchName, deps, mainRepoDir);
|
|
121
|
+
expect(actionResult.success).toBe(true);
|
|
122
|
+
// Verify files are staged
|
|
123
|
+
const stagedAfterAction = git.getStagedFiles(mainRepoDir);
|
|
124
|
+
expect(stagedAfterAction).toContain('docs/AI-TOOLING-PLAN.md');
|
|
125
|
+
// Create new branch from origin/main (this is what newpr.ts does)
|
|
126
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
127
|
+
expect(branchPoint).toBe(`origin/${baseBranch}`);
|
|
128
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
129
|
+
// Verify staged files persist after checkout from origin/main.
|
|
130
|
+
// When origin/main equals HEAD (same commit), git preserves the index.
|
|
131
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
132
|
+
expect(stagedAfterCheckout).toContain('docs/AI-TOOLING-PLAN.md');
|
|
133
|
+
// If staged files existed, commit them
|
|
134
|
+
if (stagedAfterCheckout.length > 0) {
|
|
135
|
+
git.commit({ message: 'feat: Test feature' }, mainRepoDir);
|
|
136
|
+
}
|
|
137
|
+
// Verify the file is in the commit history
|
|
138
|
+
const log = execSync('git log --oneline -1', {
|
|
139
|
+
cwd: mainRepoDir,
|
|
140
|
+
encoding: 'utf8',
|
|
141
|
+
});
|
|
142
|
+
// This SHOULD contain our commit message, but with the bug it won't
|
|
143
|
+
expect(log).toContain('Test feature');
|
|
144
|
+
// Verify the file actually exists in the new branch
|
|
145
|
+
expect(fs.existsSync(path.join(mainRepoDir, 'docs', 'AI-TOOLING-PLAN.md'))).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe('Scenario 2a: main_staged_same - staged changes on main', () => {
|
|
149
|
+
it('commit_staged action commits staged file to new branch from origin/main', () => {
|
|
150
|
+
const baseBranch = getBaseBranch();
|
|
151
|
+
const branchName = 'test-feature-staged';
|
|
152
|
+
// Create and stage a file
|
|
153
|
+
fs.mkdirSync(path.join(mainRepoDir, 'src'), { recursive: true });
|
|
154
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src', 'feature.ts'), 'export const x = 1;\n');
|
|
155
|
+
execSync('git add src/feature.ts', { cwd: mainRepoDir });
|
|
156
|
+
// Verify initial state
|
|
157
|
+
const initialState = analyzeGitState(baseBranch, mainRepoDir);
|
|
158
|
+
expect(detectScenario(initialState)).toBe('main_staged_same');
|
|
159
|
+
expect(initialState.stagedFiles).toContain('src/feature.ts');
|
|
160
|
+
// Create the action: "Commit staged changes to the new PR branch"
|
|
161
|
+
const action = {
|
|
162
|
+
action: 'commit_staged',
|
|
163
|
+
branchFrom: 'origin_main',
|
|
164
|
+
stashUnstaged: false,
|
|
165
|
+
};
|
|
166
|
+
// Execute the action (this does nothing for commit_staged)
|
|
167
|
+
const deps = createRealDeps(mainRepoDir);
|
|
168
|
+
const actionResult = executeStateAction(action, 'Test feature staged', branchName, deps, mainRepoDir);
|
|
169
|
+
expect(actionResult.success).toBe(true);
|
|
170
|
+
// Verify files are staged before checkout
|
|
171
|
+
const stagedBefore = git.getStagedFiles(mainRepoDir);
|
|
172
|
+
expect(stagedBefore).toContain('src/feature.ts');
|
|
173
|
+
// Create new branch from origin/main
|
|
174
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
175
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
176
|
+
// Verify staged files persist after checkout from origin/main.
|
|
177
|
+
// When origin/main equals HEAD (same commit), git preserves the index.
|
|
178
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
179
|
+
expect(stagedAfterCheckout).toContain('src/feature.ts');
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
describe('Scenario 2c: main_both_same - both staged and unstaged changes', () => {
|
|
183
|
+
it('commit_staged with stashUnstaged preserves staged and transfers unstaged', () => {
|
|
184
|
+
const baseBranch = getBaseBranch();
|
|
185
|
+
const branchName = 'test-feature-both';
|
|
186
|
+
// Create staged file
|
|
187
|
+
fs.mkdirSync(path.join(mainRepoDir, 'src'), { recursive: true });
|
|
188
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src', 'staged.ts'), 'export const staged = 1;\n');
|
|
189
|
+
execSync('git add src/staged.ts', { cwd: mainRepoDir });
|
|
190
|
+
// Create unstaged file
|
|
191
|
+
fs.writeFileSync(path.join(mainRepoDir, 'src', 'unstaged.ts'), 'export const unstaged = 2;\n');
|
|
192
|
+
// Verify initial state
|
|
193
|
+
const initialState = analyzeGitState(baseBranch, mainRepoDir);
|
|
194
|
+
expect(detectScenario(initialState)).toBe('main_both_same');
|
|
195
|
+
expect(initialState.stagedFiles).toContain('src/staged.ts');
|
|
196
|
+
expect(initialState.unstagedFiles).toContain('src/unstaged.ts');
|
|
197
|
+
// Create the action: "Commit staged to PR branch, move unstaged to new worktree"
|
|
198
|
+
const action = {
|
|
199
|
+
action: 'commit_staged',
|
|
200
|
+
branchFrom: 'origin_main',
|
|
201
|
+
stashUnstaged: true,
|
|
202
|
+
};
|
|
203
|
+
// Execute the action
|
|
204
|
+
const deps = createRealDeps(mainRepoDir);
|
|
205
|
+
const actionResult = executeStateAction(action, 'Test feature both', branchName, deps, mainRepoDir);
|
|
206
|
+
expect(actionResult.success).toBe(true);
|
|
207
|
+
// Verify staged files are still staged before checkout
|
|
208
|
+
const stagedBefore = git.getStagedFiles(mainRepoDir);
|
|
209
|
+
expect(stagedBefore).toContain('src/staged.ts');
|
|
210
|
+
// Create new branch from origin/main
|
|
211
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
212
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
213
|
+
// Verify staged files persist after checkout from origin/main.
|
|
214
|
+
// When origin/main equals HEAD (same commit), git preserves the index.
|
|
215
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
216
|
+
expect(stagedAfterCheckout).toContain('src/staged.ts');
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
describe('Scenario: main branch BEHIND origin/main (ancestor relationship)', () => {
|
|
220
|
+
it('commit_all when local main is behind origin/main preserves staged files', () => {
|
|
221
|
+
const baseBranch = getBaseBranch();
|
|
222
|
+
const branchName = 'test-feature-behind';
|
|
223
|
+
// Simulate origin/main being ahead by adding a commit to the bare repo
|
|
224
|
+
// Create a temporary clone, add a commit, push
|
|
225
|
+
const tempClone = path.join(tempDir, 'temp-clone');
|
|
226
|
+
execSync(`git clone "${bareRepoDir}" "${tempClone}"`, { stdio: 'ignore' });
|
|
227
|
+
execSync('git config user.email "test@test.com"', { cwd: tempClone });
|
|
228
|
+
execSync('git config user.name "Test User"', { cwd: tempClone });
|
|
229
|
+
// Checkout origin/main to properly track (clone warning about nonexistent ref)
|
|
230
|
+
execSync('git checkout -B main origin/main', { cwd: tempClone, stdio: 'ignore' });
|
|
231
|
+
fs.writeFileSync(path.join(tempClone, 'upstream-change.txt'), 'upstream change\n');
|
|
232
|
+
execSync('git add .', { cwd: tempClone });
|
|
233
|
+
execSync('git commit -m "Upstream change"', { cwd: tempClone });
|
|
234
|
+
execSync('git push origin main', { cwd: tempClone, stdio: 'ignore' });
|
|
235
|
+
fs.rmSync(tempClone, { recursive: true, force: true });
|
|
236
|
+
// Fetch in main repo to get the new origin/main
|
|
237
|
+
execSync('git fetch origin', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
238
|
+
// Now local main is BEHIND origin/main
|
|
239
|
+
const behindCheck = execSync('git rev-list HEAD..origin/main --count', {
|
|
240
|
+
cwd: mainRepoDir,
|
|
241
|
+
encoding: 'utf8',
|
|
242
|
+
}).trim();
|
|
243
|
+
expect(parseInt(behindCheck)).toBeGreaterThan(0);
|
|
244
|
+
// Create an unstaged file (simulating the user's scenario)
|
|
245
|
+
const docsDir = path.join(mainRepoDir, 'docs');
|
|
246
|
+
const planFile = path.join(docsDir, 'AI-TOOLING-PLAN.md');
|
|
247
|
+
fs.mkdirSync(docsDir, { recursive: true });
|
|
248
|
+
fs.writeFileSync(planFile, '# Plan\n');
|
|
249
|
+
// Debug: verify file exists
|
|
250
|
+
expect(fs.existsSync(planFile)).toBe(true);
|
|
251
|
+
// Verify initial state
|
|
252
|
+
const initialState = analyzeGitState(baseBranch, mainRepoDir);
|
|
253
|
+
// The relationship is 'ancestor' (HEAD is an ancestor of origin/main)
|
|
254
|
+
// which semantically means "behind" - local main is behind origin/main
|
|
255
|
+
expect(initialState.commitRelationship).toBe('ancestor');
|
|
256
|
+
expect(initialState.workingTreeStatus).toBe('unstaged_only');
|
|
257
|
+
// After fix: detectScenario now handles 'ancestor' for main branch
|
|
258
|
+
expect(detectScenario(initialState)).toBe('main_unstaged_same');
|
|
259
|
+
// Create the action: "Stage all and commit to the new PR branch"
|
|
260
|
+
const action = {
|
|
261
|
+
action: 'commit_all',
|
|
262
|
+
branchFrom: 'origin_main',
|
|
263
|
+
stashUnstaged: false,
|
|
264
|
+
};
|
|
265
|
+
// Execute the action (this stages files)
|
|
266
|
+
const deps = createRealDeps(mainRepoDir);
|
|
267
|
+
const actionResult = executeStateAction(action, 'Test feature', branchName, deps, mainRepoDir);
|
|
268
|
+
expect(actionResult.success).toBe(true);
|
|
269
|
+
// Verify files are staged
|
|
270
|
+
const stagedAfterAction = git.getStagedFiles(mainRepoDir);
|
|
271
|
+
expect(stagedAfterAction).toContain('docs/AI-TOOLING-PLAN.md');
|
|
272
|
+
// Create new branch from origin/main (this is what newpr.ts does)
|
|
273
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
274
|
+
expect(branchPoint).toBe(`origin/${baseBranch}`);
|
|
275
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
276
|
+
// Verify staged files persist after checkout from origin/main.
|
|
277
|
+
// For NEW files that don't exist in origin/main, git preserves them
|
|
278
|
+
// in the index even when the checkout updates the working tree.
|
|
279
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
280
|
+
expect(stagedAfterCheckout).toContain('docs/AI-TOOLING-PLAN.md');
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
describe('Edge case: modifying EXISTING file when behind origin/main', () => {
|
|
284
|
+
it('git refuses checkout when staged changes conflict with upstream', () => {
|
|
285
|
+
const baseBranch = getBaseBranch();
|
|
286
|
+
const branchName = 'test-feature-existing-file';
|
|
287
|
+
// Simulate origin/main being ahead by adding a commit to the bare repo
|
|
288
|
+
const tempClone = path.join(tempDir, 'temp-clone-2');
|
|
289
|
+
execSync(`git clone "${bareRepoDir}" "${tempClone}"`, { stdio: 'ignore' });
|
|
290
|
+
execSync('git config user.email "test@test.com"', { cwd: tempClone });
|
|
291
|
+
execSync('git config user.name "Test User"', { cwd: tempClone });
|
|
292
|
+
execSync('git checkout -B main origin/main', { cwd: tempClone, stdio: 'ignore' });
|
|
293
|
+
// Modify the README (which exists in both local and origin)
|
|
294
|
+
fs.appendFileSync(path.join(tempClone, 'README.md'), '\n## Upstream changes\n');
|
|
295
|
+
execSync('git add .', { cwd: tempClone });
|
|
296
|
+
execSync('git commit -m "Upstream README change"', { cwd: tempClone });
|
|
297
|
+
execSync('git push origin main', { cwd: tempClone, stdio: 'ignore' });
|
|
298
|
+
fs.rmSync(tempClone, { recursive: true, force: true });
|
|
299
|
+
// Fetch in main repo to get the new origin/main
|
|
300
|
+
execSync('git fetch origin', { cwd: mainRepoDir, stdio: 'ignore' });
|
|
301
|
+
// Verify local main is behind
|
|
302
|
+
const behindCheck = execSync('git rev-list HEAD..origin/main --count', {
|
|
303
|
+
cwd: mainRepoDir,
|
|
304
|
+
encoding: 'utf8',
|
|
305
|
+
}).trim();
|
|
306
|
+
expect(parseInt(behindCheck)).toBeGreaterThan(0);
|
|
307
|
+
// Modify README.md locally (an existing file that also changed in origin)
|
|
308
|
+
// This simulates the user making changes to a file that has upstream changes
|
|
309
|
+
fs.appendFileSync(path.join(mainRepoDir, 'README.md'), '\n## Local changes\n');
|
|
310
|
+
// Stage the change
|
|
311
|
+
execSync('git add README.md', { cwd: mainRepoDir });
|
|
312
|
+
// Verify it's staged
|
|
313
|
+
const stagedBefore = git.getStagedFiles(mainRepoDir);
|
|
314
|
+
expect(stagedBefore).toContain('README.md');
|
|
315
|
+
// Create the action
|
|
316
|
+
const action = {
|
|
317
|
+
action: 'commit_staged',
|
|
318
|
+
branchFrom: 'origin_main',
|
|
319
|
+
stashUnstaged: false,
|
|
320
|
+
};
|
|
321
|
+
// Execute the action (nothing to do for commit_staged)
|
|
322
|
+
const deps = createRealDeps(mainRepoDir);
|
|
323
|
+
const actionResult = executeStateAction(action, 'Test feature', branchName, deps, mainRepoDir);
|
|
324
|
+
expect(actionResult.success).toBe(true);
|
|
325
|
+
// Now checkout from origin/main
|
|
326
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
327
|
+
// This should fail because there's a conflict between local staged changes
|
|
328
|
+
// and upstream changes to the same file
|
|
329
|
+
let checkoutError = null;
|
|
330
|
+
try {
|
|
331
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
332
|
+
}
|
|
333
|
+
catch (e) {
|
|
334
|
+
checkoutError = e;
|
|
335
|
+
}
|
|
336
|
+
// Git will either:
|
|
337
|
+
// 1. Refuse the checkout (conflict) - checkoutError is set
|
|
338
|
+
// 2. Preserve staged changes - stagedAfterCheckout contains README.md
|
|
339
|
+
if (checkoutError) {
|
|
340
|
+
// Git refused the checkout due to conflicting changes - this is expected.
|
|
341
|
+
// When a file has both local staged changes AND upstream changes,
|
|
342
|
+
// git protects the user by refusing the checkout.
|
|
343
|
+
console.log('Git refused checkout due to conflict (expected behavior)');
|
|
344
|
+
expect(checkoutError.message).toContain('overwritten');
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Git allowed checkout - verify staged changes are preserved.
|
|
348
|
+
// This branch handles the case where git finds a way to merge cleanly.
|
|
349
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
350
|
+
expect(stagedAfterCheckout).toContain('README.md');
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
describe('Full flow: file ends up in worktree, not main', () => {
|
|
355
|
+
it('uncommitted file is committed to branch and available in worktree', () => {
|
|
356
|
+
const baseBranch = getBaseBranch();
|
|
357
|
+
const branchName = 'test-feature-full-flow';
|
|
358
|
+
// Create an unstaged file
|
|
359
|
+
fs.mkdirSync(path.join(mainRepoDir, 'docs'), { recursive: true });
|
|
360
|
+
const testFile = path.join(mainRepoDir, 'docs', 'AI-TOOLING-PLAN.md');
|
|
361
|
+
fs.writeFileSync(testFile, '# Plan\n');
|
|
362
|
+
// Stage files (what executeStateAction does for commit_all)
|
|
363
|
+
git.add('.', mainRepoDir);
|
|
364
|
+
// Verify staged
|
|
365
|
+
expect(git.getStagedFiles(mainRepoDir)).toContain('docs/AI-TOOLING-PLAN.md');
|
|
366
|
+
// Create new branch from origin/main
|
|
367
|
+
git.exec(['checkout', '-b', branchName, `origin/${baseBranch}`], { cwd: mainRepoDir });
|
|
368
|
+
// Verify still staged after checkout
|
|
369
|
+
expect(git.getStagedFiles(mainRepoDir)).toContain('docs/AI-TOOLING-PLAN.md');
|
|
370
|
+
// Commit (what newpr does)
|
|
371
|
+
git.commit({ message: 'feat: Test feature\n\n🤖 Created with newpr' }, mainRepoDir);
|
|
372
|
+
// Verify file is committed (not staged anymore)
|
|
373
|
+
expect(git.getStagedFiles(mainRepoDir)).not.toContain('docs/AI-TOOLING-PLAN.md');
|
|
374
|
+
// Verify file exists in working tree
|
|
375
|
+
expect(fs.existsSync(testFile)).toBe(true);
|
|
376
|
+
// Go back to original branch (what newpr does)
|
|
377
|
+
git.checkout(baseBranch, mainRepoDir);
|
|
378
|
+
// KEY CHECK: File should NOT exist in main worktree after checkout back
|
|
379
|
+
// because it was only committed to the feature branch
|
|
380
|
+
expect(fs.existsSync(testFile)).toBe(false);
|
|
381
|
+
// Create worktree (what newpr does)
|
|
382
|
+
const worktreePath = path.join(tempDir, 'test-worktree');
|
|
383
|
+
git.addWorktree(worktreePath, branchName, { cwd: mainRepoDir });
|
|
384
|
+
// KEY CHECK: File SHOULD exist in the worktree
|
|
385
|
+
const fileInWorktree = path.join(worktreePath, 'docs', 'AI-TOOLING-PLAN.md');
|
|
386
|
+
expect(fs.existsSync(fileInWorktree)).toBe(true);
|
|
387
|
+
// Clean up worktree
|
|
388
|
+
git.removeWorktree(worktreePath, { cwd: mainRepoDir });
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
describe('Contrast: branching from HEAD preserves staged files', () => {
|
|
392
|
+
it('use_commits_and_commit_all from HEAD preserves staged files', () => {
|
|
393
|
+
const baseBranch = getBaseBranch();
|
|
394
|
+
const branchName = 'test-feature-from-head';
|
|
395
|
+
// First create a local commit so we can branch from HEAD
|
|
396
|
+
fs.writeFileSync(path.join(mainRepoDir, 'local-commit.txt'), 'local commit\n');
|
|
397
|
+
execSync('git add local-commit.txt', { cwd: mainRepoDir });
|
|
398
|
+
execSync('git commit -m "Local commit"', { cwd: mainRepoDir });
|
|
399
|
+
// Now create an unstaged file
|
|
400
|
+
fs.mkdirSync(path.join(mainRepoDir, 'docs'), { recursive: true });
|
|
401
|
+
fs.writeFileSync(path.join(mainRepoDir, 'docs', 'new-file.md'), '# New\n');
|
|
402
|
+
// Create the action: use commits and commit all (branches from HEAD)
|
|
403
|
+
const action = {
|
|
404
|
+
action: 'use_commits_and_commit_all',
|
|
405
|
+
branchFrom: 'head',
|
|
406
|
+
stashUnstaged: false,
|
|
407
|
+
};
|
|
408
|
+
// Execute the action (this stages files)
|
|
409
|
+
const deps = createRealDeps(mainRepoDir);
|
|
410
|
+
executeStateAction(action, 'Test from head', branchName, deps, mainRepoDir);
|
|
411
|
+
// Verify files are staged
|
|
412
|
+
const stagedAfterAction = git.getStagedFiles(mainRepoDir);
|
|
413
|
+
expect(stagedAfterAction).toContain('docs/new-file.md');
|
|
414
|
+
// Create new branch from HEAD
|
|
415
|
+
const branchPoint = getBranchPoint(action, baseBranch);
|
|
416
|
+
expect(branchPoint).toBe('HEAD');
|
|
417
|
+
git.exec(['checkout', '-b', branchName, branchPoint], { cwd: mainRepoDir });
|
|
418
|
+
// When branching from HEAD, staged files ARE preserved
|
|
419
|
+
const stagedAfterCheckout = git.getStagedFiles(mainRepoDir);
|
|
420
|
+
expect(stagedAfterCheckout).toContain('docs/new-file.md');
|
|
421
|
+
});
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
//# sourceMappingURL=newpr.integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"newpr.integration.test.js","sourceRoot":"","sources":["../../src/integration/newpr.integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
package/dist/lib/config.test.js
CHANGED
|
@@ -17,22 +17,22 @@ describe('config', () => {
|
|
|
17
17
|
expect(config.worktreeParent).toBe('..');
|
|
18
18
|
expect(config.sharedRepos).toEqual([]);
|
|
19
19
|
expect(config.syncPatterns).toEqual([]);
|
|
20
|
-
expect(config.branchPrefix).toBe('
|
|
20
|
+
expect(config.branchPrefix).toBe('feat');
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
23
|
describe('generateBranchName', () => {
|
|
24
24
|
const config = getDefaultConfig();
|
|
25
25
|
it('should generate branch name from description', () => {
|
|
26
26
|
const branch = generateBranchName(config, 'Add user authentication feature');
|
|
27
|
-
expect(branch).toMatch(/^
|
|
27
|
+
expect(branch).toMatch(/^feat\/add-user-authentication-feature-[a-z0-9]+$/);
|
|
28
28
|
});
|
|
29
29
|
it('should handle uppercase in description', () => {
|
|
30
30
|
const branch = generateBranchName(config, 'Fix BUG in API');
|
|
31
|
-
expect(branch).toMatch(/^
|
|
31
|
+
expect(branch).toMatch(/^feat\/fix-bug-in-api-[a-z0-9]+$/);
|
|
32
32
|
});
|
|
33
33
|
it('should handle special characters', () => {
|
|
34
34
|
const branch = generateBranchName(config, "Add user's profile (v2)!");
|
|
35
|
-
expect(branch).toMatch(/^
|
|
35
|
+
expect(branch).toMatch(/^feat\/add-user-s-profile-v2-[a-z0-9]+$/);
|
|
36
36
|
});
|
|
37
37
|
it('should truncate long descriptions', () => {
|
|
38
38
|
const longDesc = 'This is a very long description that should be truncated to a reasonable length for a git branch name';
|
|
@@ -43,7 +43,7 @@ describe('config', () => {
|
|
|
43
43
|
it('should handle empty description', () => {
|
|
44
44
|
const branch = generateBranchName(config, '');
|
|
45
45
|
// Empty description results in empty slug, so branch is prefix/-suffix
|
|
46
|
-
expect(branch).toMatch(/^
|
|
46
|
+
expect(branch).toMatch(/^feat\/-[a-z0-9]+$/);
|
|
47
47
|
});
|
|
48
48
|
it('should use custom branch prefix', () => {
|
|
49
49
|
const customConfig = { ...config, branchPrefix: 'feature' };
|
|
@@ -154,7 +154,7 @@ describe('config', () => {
|
|
|
154
154
|
expect(config.worktreeParent).toBe('..');
|
|
155
155
|
expect(config.sharedRepos).toEqual([]);
|
|
156
156
|
expect(config.syncPatterns).toEqual([]);
|
|
157
|
-
expect(config.branchPrefix).toBe('
|
|
157
|
+
expect(config.branchPrefix).toBe('feat');
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
160
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,uDAAuD;AACvD,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAElC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -33,5 +33,5 @@ export declare const DEFAULT_WORKTREE_PARENT = "..";
|
|
|
33
33
|
/**
|
|
34
34
|
* Default branch name prefix for auto-generated branches
|
|
35
35
|
*/
|
|
36
|
-
export declare const DEFAULT_BRANCH_PREFIX = "
|
|
36
|
+
export declare const DEFAULT_BRANCH_PREFIX = "feat";
|
|
37
37
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAAgC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAAsC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,WAAW,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAAgC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,UAAsC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAS,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-detection.d.ts","sourceRoot":"","sources":["../../src/lib/state-detection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,eAAe,GACf,aAAa,CAAC;AAElB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAoBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAW7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,GAAE,MAA4B,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAyBhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"state-detection.d.ts","sourceRoot":"","sources":["../../src/lib/state-detection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGtE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,eAAe,GACf,aAAa,CAAC;AAElB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAoBjE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAW7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,GAAE,MAA4B,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAyBhG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CA0ExD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA2BjE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAM3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAM1D"}
|
|
@@ -75,8 +75,11 @@ export function detectScenario(state) {
|
|
|
75
75
|
}
|
|
76
76
|
// On main branch scenarios (1-4)
|
|
77
77
|
if (branchType === 'main') {
|
|
78
|
-
if (commitRelationship === 'same' ||
|
|
79
|
-
|
|
78
|
+
if (commitRelationship === 'same' ||
|
|
79
|
+
commitRelationship === 'behind' ||
|
|
80
|
+
commitRelationship === 'ancestor') {
|
|
81
|
+
// Same as origin/main, behind, or ancestor (all can branch from origin/main)
|
|
82
|
+
// 'ancestor' means HEAD is an ancestor of origin/main (i.e., local is behind)
|
|
80
83
|
switch (workingTreeStatus) {
|
|
81
84
|
case 'clean':
|
|
82
85
|
return 'main_clean_same'; // Scenario 1
|