- Added a comprehensive plan for history rewrites in `docs/plans/history_rewrite.md`, including backup requirements and a checklist for destructive operations. - Created a QA report for history-rewrite scripts in `docs/reports/qa_report.md`, summarizing tests, findings, and recommendations. - Introduced `check_refs.sh` script to list branches and tags, saving a tarball of tag references. - Updated `clean_history.sh` to include non-interactive mode and improved error handling for backup branch pushes. - Enhanced `preview_removals.sh` to support JSON output format and added shallow clone detection. - Added Bats tests for `clean_history.sh` and `validate_after_rewrite.sh` to ensure functionality and error handling. - Implemented pre-commit hook to block commits to `data/backups/` directory. - Improved validation script to check for backup branch existence and run pre-commit checks. - Created temporary test scripts for validating `clean_history.sh` and `validate_after_rewrite.sh` functionality.
2.0 KiB
2.0 KiB
Summary
- Provide a short summary of why the history rewrite is needed.
Checklist - required for history rewrite PRs
- I have created a local backup branch:
backup/history-YYYYMMDD-HHMMSSand verified it contains all refs. - I have pushed the backup branch to the remote origin and it is visible to reviewers.
- I have run a dry-run locally:
scripts/history-rewrite/preview_removals.sh --paths 'backend/codeql-db,codeql-db,codeql-db-js,codeql-db-go' --strip-size 50and attached the output or paste it below. - I have verified the
data/backupstarball is present and tests showing rewrite will not remove unrelated artifacts. - I have created a tag backup (see
data/backups/) and verified tags are pushed to the remote or included in the tarball. - I have coordinated with repo maintainers for a rewrite window and notified other active forks/tokens that may be affected.
- I have run the CI dry-run job and ensured it completes without blocked findings.
- This PR only contains the history-rewrite helpers; no destructive rewrite is included in this PR.
- I will not run the destructive
--forcestep without explicit approval from maintainers and a scheduled maintenance window.
Note for maintainers: validate_after_rewrite.sh will check that the backups and backup_branch are present and will fail if they are not. Provide --backup-branch "backup/history-YYYYMMDD-HHMMSS" when running the scripts or set the BACKUP_BRANCH environment variable so automated validation can find the backup branch.
Attachments
Attach the preview_removals output and data/backups/history_cleanup-*.log content and any data/backups tarball created for this PR.
Approach
Describe the paths to be removed, strip size, and whether additional blob stripping is required.
Notes for maintainers
- The workflow
.github/workflows/dry-run-history-rewrite.ymlwill run automatically on PR updates. - Please follow the checklist and only approve after offline confirmation.