From 74e2ba30a20b17cde519785967a7c3e025cb5784 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jun 02 2015 06:44:17 +0000 Subject: Rework the way we find the references of a specific branch This should avoid running into problems when there are in the same repo, from two different remotes a branch with the same name. --- diff --git a/pagure/internal/__init__.py b/pagure/internal/__init__.py index 7d2db13..de052f3 100644 --- a/pagure/internal/__init__.py +++ b/pagure/internal/__init__.py @@ -202,16 +202,19 @@ def mergeable_request_pull(): if merge is None: mergecode = new_repo.merge_analysis(repo_commit.oid)[0] - try: + refs = new_repo.listall_references() + if request.branch in refs: branch_ref = new_repo.lookup_reference( request.branch).resolve() - except (ValueError, KeyError): - try: - branch_ref = new_repo.lookup_reference( - 'refs/heads/%s' % request.branch).resolve() - except (ValueError, KeyError): - branch_ref = new_repo.lookup_reference( - 'remote/origin/%s' % request.branch).resolve() + elif 'refs/heads/%s' % request.branch in refs: + branch_ref = new_repo.lookup_reference( + 'refs/heads/%s' % request.branch).resolve() + elif 'refs/remotes/origin/%s' % request.branch in refs: + branch_ref = new_repo.lookup_reference( + 'refs/remotes/origin/%s' % request.branch).resolve() + else: + raise pagure.exceptions.PagureException( + 'No refs found for %s' % request.branch) refname = '%s:%s' % (branch_ref.name, branch_ref.name) if ( diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 1b41c9d..2e46d7d 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -767,16 +767,19 @@ def merge_pull_request(session, repo, request, username, request_folder): if merge is None: mergecode = new_repo.merge_analysis(repo_commit.oid)[0] - try: + refs = new_repo.listall_references() + if request.branch in refs: branch_ref = new_repo.lookup_reference( request.branch).resolve() - except (ValueError, KeyError): - try: - branch_ref = new_repo.lookup_reference( - 'refs/heads/%s' % request.branch).resolve() - except (ValueError, KeyError): - branch_ref = new_repo.lookup_reference( - 'remote/origin/%s' % request.branch).resolve() + elif 'refs/heads/%s' % request.branch in refs: + branch_ref = new_repo.lookup_reference( + 'refs/heads/%s' % request.branch).resolve() + elif 'refs/remotes/origin/%s' % request.branch in refs: + branch_ref = new_repo.lookup_reference( + 'refs/remotes/origin/%s' % request.branch).resolve() + else: + raise pagure.exceptions.PagureException( + 'No refs found for %s' % request.branch) refname = '%s:%s' % (branch_ref.name, branch_ref.name) if (