-
Notifications
You must be signed in to change notification settings - Fork 738
[Backport stable-25-2] Enhance cherry-pick script #29170
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: stable-25-2
Are you sure you want to change the base?
Conversation
…body formatting - Added methods to extract changelog category, entry, and description from PR body. - Improved PR body generation to include extracted changelog information and ensure validation requirements are met. - Updated workflow configuration to support new changelog features.
… backport comment handling - Updated datetime formatting to include seconds, preventing branch name conflicts. - Added method to find and update existing backport comments in original PRs, enhancing comment management. - Improved logging for comment creation and updates to provide clearer feedback on operations.
…formation - Updated the `created_backport_prs` structure to store conflicted files alongside target branches and PRs. - Improved the PR body generation to include a section for files with conflicts, providing links for easier resolution. - Enhanced conflict handling to return a list of conflicted files, improving logging and user feedback during cherry-pick operations.
- Introduced a new `pr_template.py` file containing PR template and issue reference patterns for the YDB project. - Updated `validate_pr_description.py` to utilize the new template and patterns, ensuring consistency in PR descriptions. - Enhanced `cherry_pick.py` to import category definitions and streamline changelog category handling.
…resolution - Added detailed error handling for the `git rev-parse` command to ensure the repository is cloned before execution. - Updated exception handling to specify the type of error encountered during PR fetching and automerge attempts. - Improved conflict detection logic to ensure all changes are captured and logged appropriately. - Enhanced logging for conflict resolution, providing clearer feedback on the status of conflicted files.
- Added detailed diagnostics for `git merge-base` command to better handle ancestor checks and error reporting. - Updated conflict resolution logic to capture line numbers of conflicts, improving user feedback on conflicted files. - Enhanced PR body generation to include links to specific lines in files with conflicts, facilitating easier resolution. - Introduced a method to find the first line with conflict markers in files, improving conflict detection accuracy.
- Renamed method to extract only the content of the Changelog entry section from PR body. - Updated logic to collect and merge Changelog entry contents from multiple PRs, improving clarity and usability. - Enhanced fallback mechanisms for Changelog entry generation, ensuring robust handling of various PR scenarios.
- Updated the logic for generating links to files in PR diffs to use SHA256 hashes of file content, improving accuracy and reliability. - Introduced a fallback mechanism to link to the PR files page if the diff hash cannot be retrieved. - Refactored the method for computing file hashes to handle base64-encoded content, ensuring compatibility with GitHub's requirements for diff anchors.
- Updated logic to check for existing backport comments and determine if updates are necessary based on the presence of target branches and workflow URLs. - Improved handling of comment updates to append results or replace "in progress" lines, ensuring clarity in backport status. - Enhanced logging for comment updates to provide better feedback on operations related to backport comments.
…extraction - Enhanced import handling for the PR template to include error logging for import failures. - Updated PR validation logic to utilize already loaded PR objects, reducing unnecessary API calls. - Refactored changelog entry extraction to support stopping at the changelog category, improving flexibility. - Improved file hash computation to handle both text and binary files correctly. - Enhanced conflict line detection and error handling for better user feedback during cherry-pick operations.
- Modified the cherry-pick command to use '--empty=drop' instead of '--allow-empty', improving handling of empty commits during cherry-picking operations.
…commits - Removed the '--empty=drop' option from the cherry-pick command, as it is unnecessary due to Git's default behavior of skipping empty commits. This change streamlines the command and improves clarity in the script.
… improve error handling - Removed the method for checking if a commit exists in the target branch, simplifying the cherry-pick process. - Updated the cherry-pick logic to handle cases where commits are already applied, improving user feedback and logging during cherry-pick operations.
…ogging - Updated the conflict resolution logic to capture and display detailed conflict messages alongside file paths and line numbers. - Introduced a new method to extract conflict messages from git output, enhancing clarity during manual resolution. - Improved logging to provide detailed information about detected conflicts, aiding in troubleshooting and resolution efforts.
- Updated the conflict handling logic to create a detailed summary of files with conflicts, including file paths, line numbers, and associated messages. - Improved the formatting of PR summaries for better readability, ensuring clarity when conflicts arise during cherry-picking operations.
- Enhanced the logic for capturing conflict messages to ensure accurate matching of file paths, including handling both relative and absolute paths. - Improved the detection of continuation lines in conflict messages, allowing for better summarization of conflicts. - Added a cleanup step to quit the cherry-pick operation if no commits are left to apply, improving script robustness.
|
⚪ Test history | Ya make output | Test bloat
🟢 |
|
🟢 |
|
⚪ Test history | Ya make output | Test bloat
🟢 |
Changelog entry
FOR CHANGLOG TEST!
ITS GOOD CHANGES!
Changelog category
Description for reviewers
Original PR(s)
Metadata
Conflicts Require Manual Resolution
This PR contains merge conflicts that require manual resolution.
Files with conflicts:
CONFLICT (modify/delete): .github/scripts/cherry_pick.py deleted in HEAD and modified in 6b621dfc047 (Enhance cherry-pick script with support for unmerged PRs and improved error handling). Version 6b621dfc047 (Enhance cherry-pick script with support for unmerged PRs and improved error handling) of .github/scripts/cherry_pick.py left in tree.CONFLICT (modify/delete): .github/workflows/cherry_pick.yml deleted in HEAD and modified in 6b621dfc047 (Enhance cherry-pick script with support for unmerged PRs and improved error handling). Version 6b621dfc047 (Enhance cherry-pick script with support for unmerged PRs and improved error handling) of .github/workflows/cherry_pick.yml left in tree.How to resolve conflicts:
After resolving conflicts, mark this PR as ready for review.
PR was created by cherry-pick workflow run