diff options
author | Germán Póo-Caamaño <gpoo@gnome.org> | 2011-06-22 18:57:02 -0700 |
---|---|---|
committer | Germán Póo-Caamaño <gpoo@gnome.org> | 2011-06-22 19:27:47 -0700 |
commit | 7b26ae210995a6a746dbfb20ede382bee7808dc9 (patch) | |
tree | b71ff81874ee2e15cd42b45be4fa6979158324ae /gitdm | |
parent | efcc42015375e79d27c2a6ac9e290d16d06ccf81 (diff) |
Move out the grabpatch from the parser
The class LogPatchSplitter provides an iterator per patch. This
makes the code cleaner, easier to read and more pythonic.
The class only gets each commit set as lines.
It is possible to test it separately by:
$ git log | python logparser.py | more
Signed-off-by: Germán Póo-Caamaño <gpoo@gnome.org>
Diffstat (limited to 'gitdm')
-rwxr-xr-x | gitdm | 36 |
1 files changed, 12 insertions, 24 deletions
@@ -1,11 +1,12 @@ #!/usr/bin/python -# +#-*- coding:utf-8 -*- # # This code is part of the LWN git data miner. # # Copyright 2007-11 Eklektix, Inc. # Copyright 2007-11 Jonathan Corbet <corbet@lwn.net> +# Copyright 2011 Germán Póo-Caamaño <gpoo@gnome.org> # # This file may be distributed under the terms of the GNU General # Public License, version 2. @@ -15,6 +16,7 @@ import database, csvdump, ConfigFile, reports import getopt, datetime import os, re, sys, rfc822, string import file_types +import logparser from patterns import patterns Today = datetime.date.today() @@ -204,29 +206,14 @@ def parse_numstat(line, file_filter): # # The core hack for grabbing the information about a changeset. # -def grabpatch(): - global NextLine - - while (1): - m = patterns['commit'].match (NextLine) - if m: - break; - NextLine = sys.stdin.readline () - if not NextLine: - return +def grabpatch(logpatch): + m = patterns['commit'].match (logpatch[0]) + if not m: + return None p = patch(m.group (1)) - NextLine = sys.stdin.readline () ignore = (FileFilter is not None) - while NextLine: - Line = NextLine - # - # If this line starts a new commit, drop out. - # - m = patterns['commit'].match (Line) - if m: - break - NextLine = sys.stdin.readline () + for Line in logpatch[1:]: # # Maybe it's an author line? # @@ -379,7 +366,6 @@ if AkpmOverLt == 1: Akpm = ('akpm@linux-foundation.org', LookupStoreHacker ('Andrew Morton', 'akpm@linux-foundation.org')) -NextLine = sys.stdin.readline () TotalChanged = TotalAdded = TotalRemoved = 0 # @@ -387,12 +373,14 @@ TotalChanged = TotalAdded = TotalRemoved = 0 # print >> sys.stderr, 'Grabbing changesets...\r', +patches = logparser.LogPatchSplitter(sys.stdin) printcount = CSCount = 0 -while (1): + +for logpatch in patches: if (printcount % 50) == 0: print >> sys.stderr, 'Grabbing changesets...%d\r' % printcount, printcount += 1 - p = grabpatch() + p = grabpatch(logpatch) if not p: break # if p.added > 100000 or p.removed > 100000: |