@@ -155,48 +155,54 @@ class PullRequestModel(BaseModel):
:param org_ref:
:param other_repo:
:param other_ref:
:param tmp:
"""
changesets = []
#case two independent repos
common, incoming, rheads = discovery_data
if org_repo != other_repo:
revs = [
org_repo._repo.lookup(org_ref[1]),
org_repo._repo.lookup(other_ref[1]),
]
obj = findcommonoutgoing(org_repo._repo,
localrepo.locallegacypeer(other_repo._repo.local()),
revs,
force=True)
revs = obj.missing
for cs in map(binascii.hexlify, revs):
_cs = org_repo.get_changeset(cs)
changesets.append(_cs)
# in case we have revisions filter out the ones not in given range
if org_ref[0] == 'rev' and other_ref[0] == 'rev':
revs = [x.raw_id for x in changesets]
start = org_ref[1]
stop = other_ref[1]
changesets = changesets[revs.index(start):revs.index(stop) + 1]
else:
#no remote compare do it on the same repository
if alias == 'hg':
_revset_predicates = {
'branch': 'branch',
'book': 'bookmark',
'tag': 'tag',
'rev': 'id',
}
"ancestors(%s('%s')) and not ancestors(%s('%s'))" % (
_revset_predicates[other_ref[0]], other_ref[1],
_revset_predicates[org_ref[0]], org_ref[1],
)
out = scmutil.revrange(org_repo._repo, revs)
for cs in (out):
changesets.append(org_repo.get_changeset(cs))
elif alias == 'git':
so, se = org_repo.run_git_command(
'log --reverse --pretty="format: %%H" -s -p %s..%s' % (org_ref[1],
other_ref[1])
@@ -255,26 +261,25 @@ class PullRequestModel(BaseModel):
:type other_repo:
:type other_ref:
if len(org_ref) != 2 or not isinstance(org_ref, (list, tuple)):
raise Exception('org_ref must be a two element list/tuple')
if len(other_ref) != 2 or not isinstance(org_ref, (list, tuple)):
raise Exception('other_ref must be a two element list/tuple')
org_repo_scm = org_repo.scm_instance
other_repo_scm = other_repo.scm_instance
alias = org_repo.scm_instance.alias
discovery_data = [None, None, None]
discovery_data = self._get_discovery(org_repo_scm, org_ref,
other_repo_scm, other_ref)
cs_ranges = self._get_changesets(alias,
org_repo_scm, org_ref,
other_repo_scm, other_ref,
discovery_data)
return cs_ranges, discovery_data
@@ -146,49 +146,49 @@ ${_('%s Changelog') % c.repo_name} - ${c
YAHOO.util.Event.onDOMReady(function(){
//Monitor range checkboxes and build a link to changesets
//ranges
var checkboxes = YUD.getElementsByClassName('changeset_range');
var url_tmpl = "${h.url('changeset_home',repo_name=c.repo_name,revision='__REVRANGE__')}";
YUE.on(checkboxes,'click',function(e){
var clicked_cb = e.currentTarget;
var checked_checkboxes = [];
for (pos in checkboxes){
if(checkboxes[pos].checked){
checked_checkboxes.push(checkboxes[pos]);
if(YUD.get('open_new_pr')){
if(checked_checkboxes.length>0){
// modify open pull request to show we have selected cs
YUD.get('open_new_pr').innerHTML = _TM['Open new pull request for selected changesets'];
}else{
YUD.get('open_new_pr').innerHTML = _TM['Open new pull request'];
if(checked_checkboxes.length>1){
var rev_end = checked_checkboxes[0].name;
var rev_start = checked_checkboxes[checked_checkboxes.length-1].name;
// now select all checkboxes in the middle.
var checked = false;
for (var i=0; i<checkboxes.length; i++){
var cb = checkboxes[i];
var rev = cb.name;
if (rev == rev_end){
checked = true;
if (checked){
cb.checked = true;
else{
cb.checked = false;
if (rev == rev_start){
checked = false;
Status change: