mirror of
https://github.com/ejwa/gitinspector.git
synced 2024-11-14 07:41:07 +01:00
Completely removed the missing module and the --checkout-missing option.
This is flag should not be needed anymore, as gitinspector always uses a reference point such as HEAD or some reivision when looking into the repository (never the file structure directly).
This commit is contained in:
parent
00fdec2928
commit
bc182c6924
6 changed files with 19 additions and 110 deletions
|
@ -28,7 +28,6 @@ import filtering
|
||||||
import format
|
import format
|
||||||
import gravatar
|
import gravatar
|
||||||
import interval
|
import interval
|
||||||
import missing
|
|
||||||
import multiprocessing
|
import multiprocessing
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -97,15 +96,14 @@ class Blame:
|
||||||
row = row.decode("utf-8", "replace").strip("\"").strip("'").strip()
|
row = row.decode("utf-8", "replace").strip("\"").strip("'").strip()
|
||||||
|
|
||||||
if FileDiff.is_valid_extension(row) and not filtering.set_filtered(FileDiff.get_filename(row)):
|
if FileDiff.is_valid_extension(row) and not filtering.set_filtered(FileDiff.get_filename(row)):
|
||||||
if not missing.add(row):
|
blame_string = "git blame -e -w {0} ".format("-C -C -M" if hard else "") + \
|
||||||
blame_string = "git blame -e -w {0} ".format("-C -C -M" if hard else "") + \
|
interval.get_since() + interval.get_ref() + " -- \"" + row + "\""
|
||||||
interval.get_since() + interval.get_ref() + " -- \"" + row + "\""
|
thread = BlameThread(changes, blame_string, FileDiff.get_extension(row), self.blames, row.strip())
|
||||||
thread = BlameThread(changes, blame_string, FileDiff.get_extension(row), self.blames, row.strip())
|
thread.daemon = True
|
||||||
thread.daemon = True
|
thread.start()
|
||||||
thread.start()
|
|
||||||
|
|
||||||
if hard:
|
if hard:
|
||||||
Blame.output_progress(i, len(lines))
|
Blame.output_progress(i, len(lines))
|
||||||
|
|
||||||
# Make sure all threads have completed.
|
# Make sure all threads have completed.
|
||||||
for i in range(0, NUM_THREADS):
|
for i in range(0, NUM_THREADS):
|
||||||
|
|
|
@ -22,7 +22,6 @@ import extensions
|
||||||
import filtering
|
import filtering
|
||||||
import format
|
import format
|
||||||
import interval
|
import interval
|
||||||
import missing
|
|
||||||
import optval
|
import optval
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -54,8 +53,6 @@ def __read_git_config_string__(repo, variable):
|
||||||
return (True, string) if len(string) > 0 else (False, None)
|
return (True, string) if len(string) > 0 else (False, None)
|
||||||
|
|
||||||
def init(run):
|
def init(run):
|
||||||
missing.set_checkout_missing(__read_git_config_bool__(run.repo, "checkout-missing"))
|
|
||||||
|
|
||||||
var = __read_git_config_string__(run.repo, "file-types")
|
var = __read_git_config_string__(run.repo, "file-types")
|
||||||
if var[0]:
|
if var[0]:
|
||||||
extensions.define(var[1])
|
extensions.define(var[1])
|
||||||
|
|
|
@ -34,7 +34,6 @@ import help
|
||||||
import interval
|
import interval
|
||||||
import getopt
|
import getopt
|
||||||
import metrics
|
import metrics
|
||||||
import missing
|
|
||||||
import os
|
import os
|
||||||
import optval
|
import optval
|
||||||
import outputable
|
import outputable
|
||||||
|
@ -96,7 +95,6 @@ class Runner:
|
||||||
if self.responsibilities:
|
if self.responsibilities:
|
||||||
outputable.output(responsibilities.ResponsibilitiesOutput(self.hard))
|
outputable.output(responsibilities.ResponsibilitiesOutput(self.hard))
|
||||||
|
|
||||||
outputable.output(missing.Missing())
|
|
||||||
outputable.output(filtering.Filtering())
|
outputable.output(filtering.Filtering())
|
||||||
|
|
||||||
if self.list_file_types:
|
if self.list_file_types:
|
||||||
|
@ -115,11 +113,10 @@ def main():
|
||||||
__run__ = Runner()
|
__run__ = Runner()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
__opts__, __args__ = optval.gnu_getopt(argv[1:], "cf:F:hHlLmrTwx:", ["checkout-missing:true", "exclude=",
|
__opts__, __args__ = optval.gnu_getopt(argv[1:], "f:F:hHlLmrTwx:", ["exclude=", "file-types=", "format=",
|
||||||
"file-types=", "format=", "hard:true", "help",
|
"hard:true", "help", "list-file-types:true",
|
||||||
"list-file-types:true", "localize-output:true",
|
"localize-output:true", "metrics:true", "responsibilities:true",
|
||||||
"metrics:true", "responsibilities:true", "since=",
|
"since=", "grading:true", "timeline:true", "until=", "version",
|
||||||
"grading:true", "timeline:true", "until=", "version",
|
|
||||||
"weeks:true"])
|
"weeks:true"])
|
||||||
for arg in __args__:
|
for arg in __args__:
|
||||||
__run__.repo = arg
|
__run__.repo = arg
|
||||||
|
@ -129,11 +126,7 @@ def main():
|
||||||
clear_x_on_next_pass = True
|
clear_x_on_next_pass = True
|
||||||
|
|
||||||
for o, a in __opts__:
|
for o, a in __opts__:
|
||||||
if o == "-c":
|
if o in("-h", "--help"):
|
||||||
missing.set_checkout_missing(True)
|
|
||||||
elif o == "--checkout-missing":
|
|
||||||
missing.set_checkout_missing(optval.get_boolean_argument(a))
|
|
||||||
elif o in("-h", "--help"):
|
|
||||||
help.output()
|
help.output()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
elif o in("-f", "--file-types"):
|
elif o in("-f", "--file-types"):
|
||||||
|
|
|
@ -30,7 +30,6 @@ given, information will be fetched from the last directory specified.
|
||||||
|
|
||||||
Mandatory arguments to long options are mandatory for short options too.
|
Mandatory arguments to long options are mandatory for short options too.
|
||||||
Boolean arguments can only be given to long options.
|
Boolean arguments can only be given to long options.
|
||||||
-c, --checkout-missing[=BOOL] try to checkout any missing files
|
|
||||||
-f, --file-types=EXTENSIONS a comma separated list of file extensions to
|
-f, --file-types=EXTENSIONS a comma separated list of file extensions to
|
||||||
include when computing statistics. The
|
include when computing statistics. The
|
||||||
default extensions used are:
|
default extensions used are:
|
||||||
|
|
|
@ -25,7 +25,6 @@ from changes import FileDiff
|
||||||
import comment
|
import comment
|
||||||
import filtering
|
import filtering
|
||||||
import interval
|
import interval
|
||||||
import missing
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
__metric_eloc__ = {"java": 500, "c": 500, "cpp": 500, "h": 300, "hpp": 300, "php": 500, "py": 500, "glsl": 1000,
|
__metric_eloc__ = {"java": 500, "c": 500, "cpp": 500, "h": 300, "hpp": 300, "php": 500, "py": 500, "glsl": 1000,
|
||||||
|
@ -43,13 +42,14 @@ class MetricsLogic:
|
||||||
i = i.decode("utf-8", "replace").strip("\"").strip("'").strip()
|
i = i.decode("utf-8", "replace").strip("\"").strip("'").strip()
|
||||||
|
|
||||||
if FileDiff.is_valid_extension(i) and not filtering.set_filtered(FileDiff.get_filename(i)):
|
if FileDiff.is_valid_extension(i) and not filtering.set_filtered(FileDiff.get_filename(i)):
|
||||||
if not missing.add(i):
|
file_r = subprocess.Popen("git show " + interval.get_ref() + ":" + i.strip(), shell=True, bufsize=1,
|
||||||
file_r = open(i.strip(), "rb")
|
stdout=subprocess.PIPE).stdout
|
||||||
extension = FileDiff.get_extension(i)
|
|
||||||
lines = MetricsLogic.get_eloc(file_r, extension)
|
|
||||||
|
|
||||||
if __metric_eloc__.get(extension, None) != None and __metric_eloc__[extension] < lines:
|
extension = FileDiff.get_extension(i)
|
||||||
self.eloc[i.strip()] = lines
|
lines = MetricsLogic.get_eloc(file_r, extension)
|
||||||
|
|
||||||
|
if __metric_eloc__.get(extension, None) != None and __metric_eloc__[extension] < lines:
|
||||||
|
self.eloc[i.strip()] = lines
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_eloc(file_r, extension):
|
def get_eloc(file_r, extension):
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
#
|
|
||||||
# Copyright © 2012-2013 Ejwa Software. All rights reserved.
|
|
||||||
#
|
|
||||||
# This file is part of gitinspector.
|
|
||||||
#
|
|
||||||
# gitinspector is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# gitinspector is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with gitinspector. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
from localization import N_
|
|
||||||
from outputable import Outputable
|
|
||||||
import interval
|
|
||||||
import os
|
|
||||||
import subprocess
|
|
||||||
import terminal
|
|
||||||
import textwrap
|
|
||||||
|
|
||||||
__checkout_missing__ = False
|
|
||||||
__missing_files__ = set()
|
|
||||||
|
|
||||||
def add(file_name):
|
|
||||||
if not interval.has_interval() and not os.path.exists(file_name):
|
|
||||||
if __checkout_missing__:
|
|
||||||
subprocess.call("git checkout \"" + file_name.strip() + "\"", shell=True)
|
|
||||||
else:
|
|
||||||
__missing_files__.add(file_name)
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def set_checkout_missing(checkout):
|
|
||||||
global __checkout_missing__
|
|
||||||
__checkout_missing__ = checkout
|
|
||||||
|
|
||||||
MISSING_INFO_TEXT = N_("The following files were missing in the repository and were therefore not "
|
|
||||||
"completely included in the statistical analysis. To include them, you can "
|
|
||||||
"either checkout manually using git or use the -c option in gitinspector")
|
|
||||||
|
|
||||||
class Missing(Outputable):
|
|
||||||
def output_html(self):
|
|
||||||
if __missing_files__:
|
|
||||||
missing_xml = "<div><div class=\"box\">"
|
|
||||||
missing_xml += "<p>" + _(MISSING_INFO_TEXT) + ".</p>"
|
|
||||||
|
|
||||||
for missing in __missing_files__:
|
|
||||||
missing_xml += "<p class=\"error\">" + missing + "</p>"
|
|
||||||
|
|
||||||
missing_xml += "</div></div>"
|
|
||||||
print(missing_xml)
|
|
||||||
|
|
||||||
def output_text(self):
|
|
||||||
if __missing_files__:
|
|
||||||
print("\n" + textwrap.fill(_(MISSING_INFO_TEXT) + ":", width=terminal.get_size()[0]))
|
|
||||||
|
|
||||||
for missing in __missing_files__:
|
|
||||||
(width, _unused) = terminal.get_size()
|
|
||||||
print("...%s" % missing[-width+3:] if len(missing) > width else missing)
|
|
||||||
|
|
||||||
def output_xml(self):
|
|
||||||
if __missing_files__:
|
|
||||||
message_xml = "\t\t<message>" + _(MISSING_INFO_TEXT) + "</message>\n"
|
|
||||||
missing_xml = ""
|
|
||||||
|
|
||||||
for missing in __missing_files__:
|
|
||||||
missing_xml += "\t\t\t<file>" + missing + "</file>\n"
|
|
||||||
|
|
||||||
print("\t<missing>\n" + message_xml + "\t\t<files>\n" + missing_xml + "\t\t</files>\n\t</missing>")
|
|
Loading…
Reference in a new issue