Handle multiple child revisions of same parent
Where there are multiple revisions of a child change that depend on the same revision of the parent, we hit this: File ".../gertty/view/change.py", line 548, in refreshDependencies unseen_keys.remove(c.key) KeyError: 177 An example of this a change with this issue is that revision 1 of I8cd0af9bd4d3669f436f169059e4b602d4d3036c is the parent of revisions 1 and 2 of If608302b6efacceb9ac3630b7ac402cf65ae6d68. Handle this case by uniqifying the children list simply by using a mapping of change key to subject. Change-Id: I934c6df1bdf12bf87cc9e6827d38b92d04057f39
This commit is contained in:
parent
d3768c03e6
commit
c52bddb693
@ -521,27 +521,29 @@ This Screen
|
|||||||
self.depends_on.contents[:] = []
|
self.depends_on.contents[:] = []
|
||||||
|
|
||||||
# Handle needed-by
|
# Handle needed-by
|
||||||
children = [r.change for r in session.getRevisionsByParent(revision.commit) if r.change.status != 'MERGED']
|
children = dict((r.change.key, r.change.subject)
|
||||||
|
for r in session.getRevisionsByParent(revision.commit)
|
||||||
|
if r.change.status != 'MERGED')
|
||||||
if children:
|
if children:
|
||||||
if len(self.needed_by.contents) == 0:
|
if len(self.needed_by.contents) == 0:
|
||||||
self.needed_by.contents.append((urwid.Text(('table-header', 'Needed by:')),
|
self.needed_by.contents.append((urwid.Text(('table-header', 'Needed by:')),
|
||||||
self.needed_by.options('pack')))
|
self.needed_by.options('pack')))
|
||||||
unseen_keys = set(self.needed_by_rows.keys())
|
unseen_keys = set(self.needed_by_rows.keys())
|
||||||
i = 1
|
i = 1
|
||||||
for c in children:
|
for key, subject in children.items():
|
||||||
row = self.needed_by_rows.get(c.key)
|
row = self.needed_by_rows.get(key)
|
||||||
if not row:
|
if not row:
|
||||||
row = urwid.AttrMap(urwid.Padding(ChangeButton(self, c.key, c.subject), width='pack'),
|
row = urwid.AttrMap(urwid.Padding(ChangeButton(self, key, subject), width='pack'),
|
||||||
'link', focus_map={None: 'focused-link'})
|
'link', focus_map={None: 'focused-link'})
|
||||||
self.needed_by.contents.insert(i, (row, self.depends_on.options()))
|
self.needed_by.contents.insert(i, (row, self.depends_on.options()))
|
||||||
if not self.needed_by.focus.selectable():
|
if not self.needed_by.focus.selectable():
|
||||||
self.needed_by.set_focus(i)
|
self.needed_by.set_focus(i)
|
||||||
if not self.left_column.focus.selectable():
|
if not self.left_column.focus.selectable():
|
||||||
self.left_column.set_focus(self.needed_by)
|
self.left_column.set_focus(self.needed_by)
|
||||||
self.needed_by_rows[c.key] = row
|
self.needed_by_rows[key] = row
|
||||||
else:
|
else:
|
||||||
row.original_widget.original_widget.set_label(c.subject)
|
row.original_widget.original_widget.set_label(subject)
|
||||||
unseen_keys.remove(c.key)
|
unseen_keys.remove(key)
|
||||||
i += 1
|
i += 1
|
||||||
for key in unseen_keys:
|
for key in unseen_keys:
|
||||||
row = self.needed_by_rows[key]
|
row = self.needed_by_rows[key]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user