From 8fe7dbe7a1e538487858e36231c8b0d6fe645be0 Mon Sep 17 00:00:00 2001 From: "sweep-nightly[bot]" <131841235+sweep-nightly[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 17:21:12 +0000 Subject: [PATCH] feat: Updated 2 files --- sweepai/handlers/on_merge_conflict.py | 11 +++++------ sweepai/utils/github_utils.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/sweepai/handlers/on_merge_conflict.py b/sweepai/handlers/on_merge_conflict.py index 79693788a2..c80e3289f9 100644 --- a/sweepai/handlers/on_merge_conflict.py +++ b/sweepai/handlers/on_merge_conflict.py @@ -14,7 +14,7 @@ from sweepai.utils.chat_logger import ChatLogger, discord_log_error from sweepai.utils.diff import generate_diff from sweepai.utils.event_logger import posthog -from sweepai.utils.github_utils import ClonedRepo, get_github_client +from sweepai.utils.github_utils import ClonedRepo, get_github_client, rebase_branch from sweepai.utils.progress import ( PaymentContext, TicketContext, @@ -171,7 +171,7 @@ def edit_comment(body): new_pull_request.branch_name += "_" + str(i) break - # Merge into base branch from cloned_repo.repo_dir to pr.base.ref + # Rebase new branch onto base branch git_repo = cloned_repo.git_repo old_head_branch = git_repo.branches[branch] head_branch = git_repo.create_head( @@ -179,6 +179,7 @@ def edit_comment(body): commit=old_head_branch.commit, ) head_branch.checkout() + git_repo = rebase_branch(git_repo, new_pull_request.branch_name, pr.base.ref) try: git_repo.config_writer().set_value( "user", "name", "sweep-nightly[bot]" @@ -186,10 +187,8 @@ def edit_comment(body): git_repo.config_writer().set_value( "user", "email", "team@sweep.dev" ).release() - git_repo.git.merge("origin/" + pr.base.ref) - except GitCommandError: - # Assume there are merge conflicts - pass + except Exception as e: + print("Exception occurred while configuring git user", e) git_repo.git.add(update=True) # -m and message are needed otherwise exception is thrown diff --git a/sweepai/utils/github_utils.py b/sweepai/utils/github_utils.py index ab706f77e4..139197560b 100644 --- a/sweepai/utils/github_utils.py +++ b/sweepai/utils/github_utils.py @@ -658,6 +658,22 @@ def convert_pr_draft_field(pr: PullRequest, is_draft: bool = False): return True +def rebase_branch(git_repo: git.Repo, source_branch: str, target_branch: str) -> git.Repo: + git_repo.git.checkout(source_branch) + try: + git_repo.git.rebase(target_branch) + except git.GitCommandError: + # Handle rebase conflicts + for conflicted_file in git_repo.index.conflicts: + # Take the version from the target branch + git_repo.git.checkout("--theirs", conflicted_file[0].a_path) + git_repo.git.add(conflicted_file[0].a_path) + + git_repo.git.rebase("--continue") + + return git_repo + + try: g = Github(os.environ.get("GITHUB_PAT")) CURRENT_USERNAME = g.get_user().login