Repository navigation
Add commitrocket package with batching, LFS, resume and CI - #1
Merged
Merged
Conversation
Turn the commit_and_push script into an installable package (uv, hatchling) with a `commitrocket` command and `commitrocket doctor`. - Batch pending files by size (deterministic, sequential, soft) and commit and push each batch with live progress and an average-speed ETA. - Git LFS support for large files: local-only rules by default, optional committed rules, configurable threshold, grouped uploads and thread settings. - Reliability: dry run, push retries, resume after failure or interruption, stuck-commit detection, post-push verification, http.postBuffer tuning. - Usability: config file, include/exclude patterns, remote/branch selection, no-push mode, commit message templates, JSON report and notifications. - Per-run log files in the OS-standard log folder. - Never commit the run's own log or report files. - Tests (unit and marked integration), pre-commit, and GitHub workflows for lint, tests and PyPI release.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Turns the
commit_and_pushscript into an installable Python package (commitrocket, uv + hatchling) that splits a large set of changes into size-limited batches, commits each batch and pushes it with live progress.Batching and pushing
deterministic(default),sequential,soft;--limit-mib/--max-mib.http.postBuffertuning, compression and LFS thread settings (repository-local config, restored afterwards).--dry-run,--no-push,--remote/--branch,--message-template,--include/--exclude(+-fromfiles and.commitrocketignore).Git LFS
--use-lfsstores files over a threshold (--lfs-threshold-mib, 0 = all) with LFS using local-only rules; nothing is committed unless--lfs-commit-rulesis given.--use-lfsstop the run before anything is committed.Reliability
Tooling and usability
commitrocket.tomlor[tool.commitrocket]),commitrocket doctor, per-run log files in the OS log folder,--reportJSON summary,--notify/--notify-webhook.integrationpytest marker, GitHub workflows for lint, tests and PyPI release, user docs in the README and technical docs indocs/.Before merging / releasing
PYPI_API_TOKENrepository secret and apypienvironment; the release workflow runs onv*.*.*tags and checks the tag against the package version (0.1.0).Test plan
uv run ruff check .pytest -m "not integration"), run by the pre-commit hookpytest -m integration) against a local bare repository--use-lfs(not yet done)