Commit | Line | Data |
---|---|---|
5200ae3c KH |
1 | # Feed this with git rev-list HEAD --parents |
2 | ||
3 | import sys | |
4 | ||
5 | parents = {} | |
6 | for line in sys.stdin.readlines(): | |
7 | commits = line.split() | |
8 | parents[commits[0]] = commits[1:] | |
9 | ||
10 | sequence_num = {} | |
11 | stack = [] | |
12 | for commit in parents.keys(): | |
13 | stack.append(commit) | |
14 | while stack: | |
15 | c = stack.pop() | |
16 | if c in sequence_num: | |
17 | continue | |
18 | ps = parents[c] | |
19 | if len(ps) == 1: | |
20 | p = ps[0] | |
21 | if p in sequence_num: | |
22 | sequence_num[c] = 1 + sequence_num[p] | |
23 | else: | |
24 | stack.append(c) | |
25 | stack.append(p) | |
26 | else: | |
27 | sequence_num[c] = 0 | |
28 | ||
29 | (num, commit) = max((num, commit) for (commit, num) | |
30 | in sequence_num.iteritems()) | |
31 | print '%s is a sequence of %d patches' % (commit, num) |