class Archaeologist::RepoWalker

Public Class Methods

new(repo, email) click to toggle source
# File lib/archaeologist/repowalker.rb, line 69
def initialize(repo, email)
  @repo = Rugged::Repository.new(repo)
  @email = email
end

Public Instance Methods

each() { |c, cur_l| ... } click to toggle source
# File lib/archaeologist/repowalker.rb, line 74
def each()
  walker = Rugged::Walker.new(@repo)
  already_walked = []
  @repo.branches.each { |br|
    cur_l = nil
    cur_oid = nil
    walker.sorting(Rugged::SORT_TOPO | Rugged::SORT_REVERSE)
    walker.push(br.target_id)
    walker.each { |c|
      cur_l = c.parents.empty? ?
        Linguist::Repository.new(@repo, c.oid) :
        Linguist::Repository.incremental(
          @repo, c.oid, cur_oid, cur_l.cache
        )
      cur_oid = c.oid
      if (c.author[:email] == @email || !@email&.size) &&
          !already_walked.include?(c.oid)
          already_walked << c.oid
        yield(c, cur_l)
      end
    }
  }
  walker.reset()
end