File: find_patchbomb.py

package info (click to toggle)
stgit 0.19-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,748 kB
  • sloc: python: 10,558; sh: 5,739; lisp: 2,678; makefile: 142; perl: 42
file content (33 lines) | stat: -rw-r--r-- 914 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-
# Feed this with git rev-list HEAD --parents
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)
import sys

parents = {}
for line in sys.stdin.readlines():
    commits = line.split()
    parents[commits[0]] = commits[1:]

sequence_num = {}
stack = []
for commit in parents:
    stack.append(commit)
    while stack:
        c = stack.pop()
        if c in sequence_num:
            continue
        ps = parents[c]
        if len(ps) == 1:
            p = ps[0]
            if p in sequence_num:
                sequence_num[c] = 1 + sequence_num[p]
            else:
                stack.append(c)
                stack.append(p)
        else:
            sequence_num[c] = 0

(num, commit) = max((num, commit) for (commit, num)
                    in sequence_num.items())
print('%s is a sequence of %d patches' % (commit, num))