Changeset - d415621fa7c5
[Not reviewed]
default
0 1 0
Mads Kiilerich - 12 years ago 2013-06-26 00:20:17
madski@unity3d.com
compare: handle revisions and ancestor of empty range in _get_changesets
1 file changed with 6 insertions and 1 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/compare.py
Show inline comments
 
@@ -89,49 +89,54 @@ class CompareController(BaseRepoControll
 
                    category='warning')
 
            redirect(url('summary_home', repo_name=repo.repo_name))
 

	
 
        except RepositoryError, e:
 
            log.error(traceback.format_exc())
 
            h.flash(str(e), category='warning')
 
            if not partial:
 
                redirect(h.url('summary_home', repo_name=repo.repo_name))
 
            raise HTTPBadRequest()
 

	
 
    def _get_changesets(self, alias, org_repo, org_ref, other_repo, other_ref, merge):
 
        """
 
        Returns a list of changesets that can be merged from org_repo@org_ref
 
        to other_repo@other_ref ... and the ancestor that would be used for merge
 

	
 
        :param org_repo:
 
        :param org_ref:
 
        :param other_repo:
 
        :param other_ref:
 
        :param tmp:
 
        """
 

	
 
        ancestor = None
 

	
 
        if alias == 'hg':
 
        if org_rev == other_rev:
 
            changesets = []
 
            if merge:
 
                ancestor = org_rev
 

	
 
        elif alias == 'hg':
 
            # lookup up the exact node id
 
            _revset_predicates = {
 
                    'branch': 'branch',
 
                    'book': 'bookmark',
 
                    'tag': 'tag',
 
                    'rev': 'id',
 
                }
 

	
 
            org_rev_spec = "max(%s(%%s))" % _revset_predicates[org_ref[0]]
 
            org_revs = org_repo._repo.revs(org_rev_spec, safe_str(org_ref[1]))
 
            org_rev = org_repo._repo[org_revs[-1] if org_revs else -1].hex()
 

	
 
            other_revs_spec = "max(%s(%%s))" % _revset_predicates[other_ref[0]]
 
            other_revs = other_repo._repo.revs(other_revs_spec, safe_str(other_ref[1]))
 
            other_rev = other_repo._repo[other_revs[-1] if other_revs else -1].hex()
 

	
 
            #case two independent repos
 
            if org_repo != other_repo:
 
                hgrepo = unionrepo.unionrepository(other_repo.baseui,
 
                                                   other_repo.path,
 
                                                   org_repo.path)
 
                # all the changesets we are looking for will be in other_repo,
 
                # so rev numbers from hgrepo can be used in other_repo
 

	
0 comments (0 inline, 0 general)