You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* fix: devcontainer obj/ files owned by root break incremental builds
postCreateCommand runs dotnet restore as root in some devcontainer CLI
versions, creating obj/ directories owned by root:root. MSBuild's
incremental build then fails with MSB3374 because utimensat() requires
file ownership to set timestamps — 777 permissions aren't sufficient.
Fix: explicitly set remoteUser to vscode and add a chown safety net
in setup.sh after dotnet restore.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add rebase command + simplify push with force-with-lease
New `rebase` command rebases a feature branch onto origin/main:
- Syncs origin refs first (reuses bundle mechanism)
- Launches Claude Code for conflict resolution if rebase fails
- Guards against running on main (use `sync` instead)
Simplified `push` divergence handling:
- Removed auto-rebase-onto-origin/branch + Claude logic from push
- Replaced with force-with-lease when history diverged (e.g., after rebase)
- Uses remoteSha from ls-remote as the expected lease value
Also addresses review feedback: use vscode:vscode instead of 1000:1000
in setup.sh chown for robustness across image versions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: use positional args for bash -c in devcontainer exec
Replace string interpolation of $workdir (and other variables) in
bash -c commands with positional arguments via -- $arg. This prevents
shell metacharacter injection from directory/branch names.
Converts all 13 call sites to use 'cd "$1" && ...' -- $workdir
pattern, verified working through the PowerShell → devcontainer exec
→ docker exec → bash argument chain.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: scope chown to root-owned files, consistency for git log context
setup.sh: use -h (no symlink follow) and --from=root (only fix
root-owned files from dotnet restore, skip vscode-owned files).
devcontainer.ps1: run git log in workdir context for consistency
with all other devcontainer exec calls in the rebase block.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Write-Step'Launching Claude Code to help resolve conflicts...'
468
-
$planInstruction=if ($NoPlanMode) {
469
-
'Resolve all conflicts directly.'
470
-
} else {
471
-
'Start by using plan mode to analyze the conflicts and present a resolution strategy before making changes.'
472
-
}
473
-
$safeBranch=$branch-replace'[^a-zA-Z0-9_\-/.]',''
474
-
$conflictPrompt="A git rebase of branch '${safeBranch}' onto origin/${safeBranch} has resulted in merge conflicts. Run git status to see conflicted files. Analyze each conflict, resolve them, git add the resolved files, and run git rebase --continue. If there are multiple conflicting commits, continue resolving until the rebase is complete. ${planInstruction}"
Write-Step'Launching Claude Code to help resolve conflicts...'
533
+
$planInstruction=if ($NoPlanMode) {
534
+
'Resolve all conflicts directly.'
535
+
} else {
536
+
'Start by using plan mode to analyze the conflicts and present a resolution strategy before making changes.'
537
+
}
538
+
$safeBranch=$branch-replace'[^a-zA-Z0-9_\-/.]',''
539
+
$conflictPrompt="A git rebase of branch '${safeBranch}' onto origin/main has resulted in merge conflicts. Run git status to see conflicted files. Analyze each conflict, resolve them, git add the resolved files, and run git rebase --continue. If there are multiple conflicting commits, continue resolving until the rebase is complete. ${planInstruction}"
0 commit comments