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
- _stage_one: KeyboardInterrupt derives from BaseException, so the prior
`except Exception` skipped restoration on Ctrl-C during staging. Switch
to try/finally with a staged_ok flag so restoration always runs on any
failure, including Ctrl-C.
- Fix a misplaced quote in the "no patch file" warning so the project name
lands inside the quoted `dfetch diff` command, matching update_patch.py.
- Catch OSError alongside RuntimeError when stepping the interactive TUI
(single- and multi-project) so a patch file that goes missing mid-review
doesn't leave the terminal stuck in raw mode.
- interactive_helper.py: reject trailing tokens after REPEAT instead of
silently ignoring them; terminate the driven dfetch process if _drive
raises instead of leaking it.
- Demo scripts: resolve demo-magic.sh and workspace paths from the
script's own directory (BASH_SOURCE) instead of the caller's cwd; use a
unique mktemp workspace instead of a fixed directory name so a
pre-existing directory of that name can't collide with the cleanup
trap's rm -rf; preserve the replay command's exit status through
cleanup.
- Remove an unnecessary inline pylint suppression in svn_steps.py (other
step files import `then` from behave without it).
- Clarify that replay-patches stages "eligible selected projects" (skips
ones with no patches or local changes), not unconditionally all of them.
Verified: all 724 unit tests, the git and SVN replay-patches BDD
scenarios, and both demo scripts end-to-end (exit 0, no leftover
directories) still pass; ruff/pylint/mypy/pydocstyle/bandit clean.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A7miizBGMoLEXXZxuq6XUJ
0 commit comments