Esempio n. 1
0
def run(args):
    push = Push(args.rev)

    num_scheduled = len(push.scheduled_task_labels)
    num_total = len(push.target_task_labels)
    percentage = round(float(num_scheduled) / num_total * 100, 1)
    all_regressions = push.get_possible_regressions("label") | push.get_likely_regressions("label")

    return [[
        'Tasks Scheduled',
        'Tasks Total',
        'Percentage',
        'Total Hours (scheduled)',
        'Backed Out',
        'Regressions (possible)',
        'Regressions (likely)',
        'Caught',
        'Missed',
    ], [
        num_scheduled,
        num_total,
        percentage,
        push.scheduled_duration,
        push.backedout,
        len(push.get_possible_regressions("label")),
        len(push.get_likely_regressions("label")),
        len(all_regressions & push.scheduled_task_labels),
        len(all_regressions - push.scheduled_task_labels),
    ]]
def go(repo_dir):
    with hglib.open(repo_dir) as hg:
        revs = repository.get_revs(hg, -1000, -500)
        commits = repository.hg_log(hg, revs)
        backouts = list(
            set(commit.backedoutby for commit in commits
                if commit.ever_backedout))
        backedouts = list(
            set(commit.node for commit in commits if commit.ever_backedout))

    likely_label_count = 0
    possible_label_count = 0
    likely_group_count = 0
    possible_group_count = 0

    backout_regressions = {}

    for backout in tqdm(backouts):
        p = Push(backout)

        label_regressions = p.get_regressions("label")
        likely_label_count += len(p.get_likely_regressions("label"))
        possible_label_count += len(p.get_possible_regressions("label"))

        group_regressions = p.get_regressions("group")
        likely_group_count += len(p.get_likely_regressions("label"))
        possible_group_count += len(p.get_possible_regressions("label"))

        if len(label_regressions) > 0 or len(group_regressions) > 0:
            backout_regressions[backout] = {
                "label": label_regressions,
                "group": group_regressions,
            }

    print(f"Likely labels for backouts: {likely_label_count}")
    print(f"Likely groups for backouts: {likely_group_count}")
    print(f"Possible labels for backouts: {possible_label_count}")
    print(f"Possible groups for backouts: {possible_group_count}")

    backedout_regressions = {}

    for backedout in tqdm(backedouts):
        p = Push(backedout)

        label_regressions = p.get_regressions("label")
        group_regressions = p.get_regressions("group")

        if (len(p.get_likely_regressions("label")) == 0
                or len(p.get_likely_regressions("group")) == 0):
            backedout_regressions[backedout] = {
                "label": label_regressions,
                "group": group_regressions,
            }

    with open("backout_regressions.json", "w") as f:
        json.dump(backout_regressions, f)

    with open("backedout_regressions.json", "w") as f:
        json.dump(backedout_regressions, f)