summaryrefslogtreecommitdiff
path: root/gitdm
diff options
context:
space:
mode:
authorGermán Póo-Caamaño <gpoo@gnome.org>2011-06-22 18:57:02 -0700
committerGermán Póo-Caamaño <gpoo@gnome.org>2011-06-22 19:27:47 -0700
commit7b26ae210995a6a746dbfb20ede382bee7808dc9 (patch)
treeb71ff81874ee2e15cd42b45be4fa6979158324ae /gitdm
parentefcc42015375e79d27c2a6ac9e290d16d06ccf81 (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-xgitdm36
1 files changed, 12 insertions, 24 deletions
diff --git a/gitdm b/gitdm
index fa7e6ba..24b5c96 100755
--- a/gitdm
+++ b/gitdm
@@ -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: