Ejemplo n.º 1
0
    def __init__(self, options, repo=None, logger=None):
        self.options = options

        if logger is None:
            self.logger = standard_logger(self.__class__.__name__,
                                          options.debug)

        if repo is None:
            self.repo = GitUtils.get_repo()
        else:
            self.repo = repo

        # Nested dict mapping dependents -> dependencies -> files
        # causing that dependency -> numbers of lines within that file
        # causing that dependency.  The first two levels form edges in
        # the dependency graph, and the latter two tell us what caused
        # those edges.
        self.dependencies = {}

        # A TODO list (queue) and dict of dependencies which haven't
        # yet been recursively followed.  Only useful when recursing.
        self.todo = []
        self.todo_d = {}

        # An ordered list and dict of commits whose dependencies we
        # have already detected.
        self.done = []
        self.done_d = {}

        # A cache mapping SHA1s to commit objects
        self.commits = {}

        # Memoization for branch_contains()
        self.branch_contains_cache = {}

        # Callbacks to be invoked when a new dependency has been
        # discovered.
        self.listeners = []
Ejemplo n.º 2
0
def test_new():
    repo = GitUtils.get_repo()
    exploder = GitExploder(repo, "HEAD~5", "HEAD", False, 1)
    assert exploder is not None
Ejemplo n.º 3
0
def main(args):
    args = parse_args(args)
    repo = GitUtils.get_repo()
    exploder = GitExploder(repo, args.base, args.head, args.debug,
                           args.context_lines)
    exploder.run()