def METHOD_NAME(self):
    branches_lines = self.git_lines(
        'branch',
        '--list',
        '--format',
        ' '.join((
            '%(if)%(symref)%(then)yes%(else)no%(end)',
            '%(HEAD) %(refname:short) %(objectname:short)',
            '%(if)%(upstream)%(then)[%(upstream:short)',
            '%(if)%(upstream:track)%(then): %(upstream:track,nobracket)%(end)]',
            '%(end)',
            '%(contents:subject)'
        )),
        '-vv',
        '--no-color',
        *self.git_args)
    for line in branches_lines:
        m = re.match(r'''(?P<is_symref>(yes|no)?)\s+
                         (?P<current>\*?)\s+
                         (?P<localbranch>\S+)\s+
                         (?P<refid>\w+)\s+
                         (?:\[
                           (?P<remotebranch>[^\s\]:]+):?
                           \s*(?P<extra>.*?)
                         \])?
                         \s*(?P<msg>.*)''', line, re.VERBOSE)
        if not m:
            continue
        branch_details = AttrDict(m.groupdict())
        if branch_details.is_symref == 'yes':
            continue
        yield branch_details
    branch_stats = self.gitRootSheet.gitBranchStatuses
    for row in Progress(self.rows):
        merge_base = self.git_all("show-branch", "--merge-base", row.localbranch, self.gitRootSheet.branch, _ok_code=[0,1]).strip()
        row.update(dict(
            merge_name = self.git_all("name-rev", "--name-only", merge_base).strip() if merge_base else '',
            upstream = branch_stats.get(row.localbranch),
            last_commit = self.git_all("show", "--no-patch", '--pretty=%ai', row.localbranch).strip(),
            last_author = self.git_all("show", "--no-patch", '--pretty=%an', row.localbranch).strip()
        ))