Add findoldfiles

YA brutal hack; this one crawls the tree and prints out files which have
not been touched since the original commit.

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
Jonathan Corbet
2010-02-17 08:29:40 -07:00
parent 2097993e3e
commit 49c689276d
2 changed files with 27 additions and 77 deletions

27
findoldfiles Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/python
#
# Another quick hack of a script to find files unchanged
# since a given commit.
#
import sys, os
OriginalSin = '1da177e4c3f41524e886b7f1b8a0c1fc7321cac2'
def CheckFile(file):
git = os.popen('git log --pretty=oneline -1 ' + file, 'r')
line = git.readline()
if line.startswith(OriginalSin):
print file
git.close()
#
# Here we just plow through all the files.
#
if len(sys.argv) != 2:
sys.stderr.write('Usage: findoldfiles directory\n')
sys.exit(1)
os.chdir(sys.argv[1])
files = os.popen('/usr/bin/find . -type f', 'r')
for file in files.readlines():
if file.find('.git/') < 0:
CheckFile(file[:-1])

View File

@@ -1,77 +0,0 @@
#!/usr/bin/python
#
# Find out how many lines were introduced in each major release.
#
# linetags <directory>
#
import sys, re, os, pickle
CommitLines = { }
commitpat = re.compile(r'^([\da-f][\da-f]+) ')
def GetCommitLines(file):
print file
blame = os.popen('git blame -p ' + file, 'r')
for line in blame.readlines():
m = commitpat.search(line)
#
# All-zero commits mean we got fed a file that git doesn't
# know about. We could throw an exception and abort processing
# now, or we can just silently ignore it...
#
if not m or m.group(1) == '0000000000000000000000000000000000000000':
continue
try:
CommitLines[m.group(1)] += 1
except KeyError:
CommitLines[m.group(1)] = 1
blame.close()
#
# Try to figure out which tag is the first to contain each commit.
#
refpat = re.compile(r'^(v2\.6\.\d\d).*$')
def CommitToTag(commit):
try:
return DB[commit]
except KeyError:
print 'Missing commit %s' % (commit)
return 'WTF?'
TagLines = { }
def MapCommits():
print 'Mapping tags...'
for commit in CommitLines.keys():
tag = CommitToTag(commit)
try:
TagLines[tag] += CommitLines[commit]
except KeyError:
TagLines[tag] = CommitLines[commit]
#
# Here we just plow through all the files.
#
if len(sys.argv) != 2:
sys.stderr.write('Usage: linetags directory\n')
sys.exit(1)
#
# Grab the tags/version database.
#
dbf = open('committags.db', 'r')
DB = pickle.load(dbf)
dbf.close()
out = open('linetags.out', 'w')
os.chdir(sys.argv[1])
files = os.popen('/usr/bin/find . -type f', 'r')
for file in files.readlines():
if file.find('.git/') < 0:
GetCommitLines(file[:-1])
MapCommits()
# print TagLines
tags = TagLines.keys()
tags.sort()
for tag in tags:
out.write('%s %d\n' % (tag, TagLines[tag]))
out.close()