chiark / gitweb /
Add some performance testing scripts
[stgit] / perf / find_patchbomb.py
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)