From 29040361ca132a3a8e4671e1d21f9a0b2a920fcb Mon Sep 17 00:00:00 2001 From: Heikki Hokkanen Date: Thu, 6 Sep 2007 10:31:46 +0300 Subject: [PATCH] Reverted gitstats to revision 76d1dc7a8be6523fde1252850790494442220e0c. This reverts "Attempt to optimize file counting." and related commits. (commit c257429c561af8b99bb0a0daa65871a80a9fedb2) --- gitstats | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/gitstats b/gitstats index 770ff94..41b5d68 100755 --- a/gitstats +++ b/gitstats @@ -128,17 +128,9 @@ class GitDataCollector(DataCollector): pass # Collect revision statistics - # "commit " - # " " - self.files_by_stamp = {} # stamp -> files - lines = getoutput('git-rev-list --pretty=format:"%at %an" HEAD').split('\n') - self.total_commits = len(lines) / 2 - commit = '0' + # Outputs " " + lines = getoutput('git-rev-list --pretty=format:"%at %an" HEAD |grep -v ^commit').split('\n') for line in lines: - if line[0] == 'c': - commit = line[7:] - continue - # linux-2.6 says "" for one line O_o parts = line.split(' ') author = '' @@ -226,14 +218,20 @@ class GitDataCollector(DataCollector): else: self.commits_by_year[yy] = 1 - # file statistics - # " " + # TODO Optimize this, it's the worst bottleneck + # outputs " " for each revision + self.files_by_stamp = {} # stamp -> files + lines = getoutput('git-rev-list --pretty=format:"%at %H" HEAD |grep -v ^commit |while read line; do set $line; echo "$1 $(git-ls-tree -r "$2" |wc -l)"; done').split('\n') + self.total_commits = len(lines) + for line in lines: + parts = line.split(' ') + if len(parts) != 2: + continue + (stamp, files) = parts[0:2] try: - files = int(getoutput('git-ls-tree -r "%s" |wc -l' % commit, quiet = True)) + self.files_by_stamp[int(stamp)] = int(files) except ValueError: - files = 0 - print 'Warning: failed to collect file statistics for commit "%s"' % commit - self.files_by_stamp[stamp] = files + print 'Warning: failed to parse line "%s"' % line # extensions self.extensions = {} # extension -> files, lines -- 2.11.4.GIT