diff --git a/rhodecode/model/pull_request.py b/rhodecode/model/pull_request.py --- a/rhodecode/model/pull_request.py +++ b/rhodecode/model/pull_request.py @@ -36,7 +36,8 @@ from rhodecode.model.db import PullReque from rhodecode.model.notification import NotificationModel from rhodecode.lib.utils2 import safe_unicode -from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil +from rhodecode.lib.vcs.utils.hgcompat import discovery, localrepo, scmutil, \ + findcommonoutgoing log = logging.getLogger(__name__) @@ -79,22 +80,30 @@ class PullRequestModel(BaseModel): #notification to reviewers notif = NotificationModel() + pr_url = h.url('pullrequest_show', repo_name=other_repo.repo_name, + pull_request_id=new.pull_request_id, + qualified=True, + ) subject = safe_unicode( h.link_to( _('%(user)s wants you to review pull request #%(pr_id)s') % \ {'user': created_by_user.username, 'pr_id': new.pull_request_id}, - h.url('pullrequest_show', repo_name=other_repo.repo_name, - pull_request_id=new.pull_request_id, - qualified=True, - ) + pr_url ) ) body = description + kwargs = { + 'pr_title': title, + 'pr_user_created': h.person(created_by_user.email), + 'pr_repo_url': h.url('summary_home', repo_name=other_repo.repo_name, + qualified=True,), + 'pr_url': pr_url, + 'pr_revisions': revisions + } notif.create(created_by=created_by_user, subject=subject, body=body, recipients=reviewers, - type_=Notification.TYPE_PULL_REQUEST,) - + type_=Notification.TYPE_PULL_REQUEST, email_kwargs=kwargs) return new def update_reviewers(self, pull_request, reviewers_ids): @@ -156,7 +165,10 @@ class PullRequestModel(BaseModel): #case two independent repos common, incoming, rheads = discovery_data if org_repo != other_repo and incoming: - revs = org_repo._repo.changelog.findmissing(common, rheads) + obj = findcommonoutgoing(org_repo._repo, + localrepo.locallegacypeer(other_repo._repo.local()), + force=True) + revs = obj.missing for cs in reversed(map(binascii.hexlify, revs)): changesets.append(org_repo.get_changeset(cs)) @@ -205,6 +217,7 @@ class PullRequestModel(BaseModel): log.debug('Doing discovery for %s@%s vs %s@%s' % ( org_repo, org_ref, other_repo, other_ref) ) + #log.debug('Filter heads are %s[%s]' % ('', org_ref[1])) org_peer = localrepo.locallegacypeer(_org_repo.local()) tmp = discovery.findcommonincoming( @@ -212,7 +225,7 @@ class PullRequestModel(BaseModel): remote=org_peer, # org_repo source for incoming heads=[_other_repo[other_rev].node(), _org_repo[org_rev].node()], - force=False + force=True ) return tmp