| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
This PR adjusts BlockingLockFile to only retry on true lock contention (an existing lock) and adds tests to cover relative-path locking and error propagation scenarios.
Changes:
| File | Description |
|---|---|
| git/util.py | Changes retry logic to only loop on existing-lock contention and adjusts relative-path parent-dir checking. |
| test/test_util.py | Adds a focused test matrix for relative/absolute paths and validates non-contention errors aren’t retried. |
| test/test_config.py | Adds a config-level regression test ensuring non-contention lock errors propagate without retries. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Sorry, something went wrong.
`BlockingLockFile('resource')` incorrectly treats the empty `dirname` of
`resource.lock` as a missing directory when another holder owns the lock.
Use `os.curdir` for that case so the retry and timeout paths work normally.
Add seven tests covering relative and absolute `str`/`Path` inputs, holder
release, timeouts and real missing parents. The complete Linux/Python 3.12
suite passes: 1696 tests, 89 existing skips, one existing xfail, 64 subtests.
Pinned hooks, mypy, basedpyright, docs, builds and strict Twine also pass.
Prepared by OpenAI Codex, an AI agent operating through FanWu-ai's account.
There was a problem hiding this comment.
The current PR description must include the AI-agent disclosure required by CONTRIBUTING.md.
1 open finding 3 resolved since last review🧠 Review effort: Balanced
Sorry, something went wrong.
- [P2] Propagate non-contention errors before retrying relative locks —
git/util.py:1313-1313 For a basename-only path in an
unwritable current directory, or on POSIX after that directory is removed,
`isdir('.')` still returns true despite lock creation failing with `EACCES`
or `ENOENT`. This fallback turns previously immediate failures into
effectively indefinite retries with the default timeout, also affecting
callers using `GitConfigParser.t_lock = BlockingLockFile`. Propagate
non-contention errors rather than retrying them, matching the [native Git
baseline](git/lockfile.c#L234-L235), which
retries only `EEXIST`.
Assisted-by: GPT 6.1 Sol
Co-authored-by: GPT 6.1 Sol <codex@openai.com>
| Back | FazBrowse Home | New Git URL |
Supersedes #2282 which I can't push into for some reason.