From 1cd1ac0c88b8827d7c929ec5d1438a646d199f87 Mon Sep 17 00:00:00 2001 From: long2ice Date: Mon, 10 Mar 2025 16:09:57 +0800 Subject: [PATCH] feat: Enhance GitHub issue handling in commit workflow - Update `get_selected_issue_ids()` to return repository context for cross-repository issue closing - Modify commit message generation to support cross-repository issue references - Improve issue selection logic to handle different repository scenarios - Add support for appending full repository issue references when issues are from different repositories --- merico/github/commit/commit.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/merico/github/commit/commit.py b/merico/github/commit/commit.py index b54de95..8bf5f2f 100644 --- a/merico/github/commit/commit.py +++ b/merico/github/commit/commit.py @@ -429,12 +429,15 @@ def push_changes(): def get_selected_issue_ids(): """ 获取用户选中的issue id + + Returns: + list: 用户选中的issue id列表 """ name = get_git_username() if not name: - return [] - owner_repo = get_github_repo() - issues = get_github_repo_issues(owner_repo, assignee=name, state="open") + return + issue_repo = get_github_repo(True) + issues = get_github_repo_issues(issue_repo, assignee=name, state="open") if issues: checkbox = Checkbox( [f"#{issue['number']}: {issue['title']}" for issue in issues], @@ -442,7 +445,6 @@ def get_selected_issue_ids(): ) checkbox.render() return [issues[idx]["number"] for idx in checkbox.selections] - return [] def main(): @@ -510,8 +512,14 @@ def main(): # add closes #IssueNumber in commit message from issues from user selected issue_ids = get_selected_issue_ids() if issue_ids: + issue_repo = get_github_repo(True) + owner_repo = get_github_repo() + closes_issue_contents = [] for issue_id in issue_ids: - commit_message["content"] += f"\n\nCloses #{issue_id}" + closes_issue_contents.append( + f"#{issue_id}" if owner_repo == issue_repo else f"{issue_repo}#{issue_id}" + ) + commit_message["content"] += f"\n\nCloses {', '.join(closes_issue_contents)}" commit_result = display_commit_message_and_commit(commit_message["content"]) if not commit_result: print("Commit aborted.", flush=True)