diff --git a/rhodecode/controllers/pullrequests.py b/rhodecode/controllers/pullrequests.py --- a/rhodecode/controllers/pullrequests.py +++ b/rhodecode/controllers/pullrequests.py @@ -81,6 +81,19 @@ class PullrequestsController(BaseRepoCon return hist_l + def _get_default_rev(self, repo): + """ + Get's default revision to do compare on pull request + + :param repo: + """ + repo = repo.scm_instance + if 'default' in repo.branches: + return 'default' + else: + #if repo doesn't have default branch return first found + return repo.branches.keys()[0] + def show_all(self, repo_name): c.pull_requests = PullRequestModel().get_all(repo_name) c.repo_name = repo_name @@ -106,7 +119,8 @@ class PullrequestsController(BaseRepoCon # add org repo to other so we can open pull request agains itself c.other_repos.extend(c.org_repos) - c.default_pull_request = org_repo.repo_name + c.default_pull_request = org_repo.repo_name # repo name pre-selected + c.default_pull_request_rev = self._get_default_rev(org_repo) # revision pre-selected c.default_revs = self._get_repo_refs(org_repo.scm_instance) #add orginal repo other_repos_info[org_repo.repo_name] = { @@ -130,6 +144,8 @@ class PullrequestsController(BaseRepoCon #add parents of this fork also if org_repo.parent: c.default_pull_request = org_repo.parent.repo_name + c.default_pull_request_rev = self._get_default_rev(org_repo.parent) + c.default_revs = self._get_repo_refs(org_repo.parent.scm_instance) c.other_repos.append((org_repo.parent.repo_name, '%s/%s' % ( org_repo.parent.user.username, org_repo.parent.repo_name)) diff --git a/rhodecode/public/js/rhodecode.js b/rhodecode/public/js/rhodecode.js --- a/rhodecode/public/js/rhodecode.js +++ b/rhodecode/public/js/rhodecode.js @@ -86,7 +86,18 @@ var prevElementSibling = function( el ) } } - +var setSelectValue = function(select, val){ + var selection = YUD.get(select); + + // select element + for(var i=0;i - ${h.select('other_repo',c.default_pull_request ,c.other_repos,class_='refs')}:${h.select('other_ref','',c.default_revs,class_='refs')} + ${h.select('other_repo',c.default_pull_request ,c.other_repos,class_='refs')}:${h.select('other_ref',c.default_pull_request_rev,c.default_revs,class_='refs')}
@@ -146,25 +146,29 @@ as_form=True)}"; var select_refs = YUQ('#pull_request_form select.refs') - + var rev_data = {}; // gather the org/other ref and repo here for(var i=0;i1){ key = select_ref.name+"_type"; val = select_ref_data[0]; url = url.replace(key,val); - + rev_data[key] = val; + key = select_ref.name; val = select_ref_data[1]; url = url.replace(key,val); - + rev_data[key] = val; + }else{ key = select_ref.name; val = select_ref.value; url = url.replace(key,val); + rev_data[key] = val; } } @@ -182,6 +186,8 @@ YUD.get('other_repo_gravatar').src = other_repos_info[repo_name]['gravatar']; YUD.get('other_repo_desc').innerHTML = other_repos_info[repo_name]['description']; YUD.get('other_ref').innerHTML = other_repos_info[repo_name]['revs']; + // select back the revision that was just compared + setSelectValue(YUD.get('other_ref'), rev_data['other_ref']); }) } YUE.on('refresh','click',function(e){