diff options
Diffstat (limited to 'lib/oxidized/output')
| -rw-r--r-- | lib/oxidized/output/git.rb | 30 | 
1 files changed, 24 insertions, 6 deletions
diff --git a/lib/oxidized/output/git.rb b/lib/oxidized/output/git.rb index 8b605f6..8d9dae1 100644 --- a/lib/oxidized/output/git.rb +++ b/lib/oxidized/output/git.rb @@ -21,7 +21,14 @@ class Git < Output        Oxidized.asetus.save :user        raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'      end -    @cfg.repo = File.expand_path @cfg.repo + +    if @cfg.repo.respond_to?(:each) +      @cfg.repo.each do |group, repo| +        @cfg.repo["#{group}="] = File.expand_path repo +      end +    else +      @cfg.repo = File.expand_path @cfg.repo +    end    end    def store file, outputs, opt={} @@ -70,7 +77,10 @@ class Git < Output      def version node, group        begin          repo = @cfg.repo -        if group +        path = node +        if group and @cfg.single_repo? +          path = "#{group}/#{node}" +        elsif group            repo = File.join File.dirname(repo), group + '.git'          end          repo = Rugged::Repository.new repo @@ -80,7 +90,7 @@ class Git < Output          i = -1          tab  = []          walker.each do |commit| -          if commit.diff(paths: [node]).size > 0 +          if commit.diff(paths: [path]).size > 0              hash = {}              hash[:date] = commit.time.to_s              hash[:oid] = commit.oid @@ -100,8 +110,10 @@ class Git < Output      def get_version node, group, oid        begin          repo = @cfg.repo -        if group && group != '' +        if group && group != '' && !@cfg.single_repo?            repo = File.join File.dirname(repo), group + '.git' +        elsif group && group != '' +          node = File.join group, node          end          repo = Rugged::Repository.new repo          repo.blob_at(oid,node).content @@ -115,7 +127,7 @@ class Git < Output        begin          repo = @cfg.repo          diff_commits = nil -        if group && group != '' +        if group && group != '' && !@cfg.single_repo?            repo = File.join File.dirname(repo), group + '.git'          end          repo = Rugged::Repository.new repo @@ -147,13 +159,19 @@ class Git < Output    def update repo, file, data      return if data.empty? +      if @opt[:group]        if @cfg.single_repo?          file = File.join @opt[:group], file        else -        repo = File.join File.dirname(repo), @opt[:group] + '.git' +        repo = if repo.is_a?(::String) +                 File.join File.dirname(repo), @opt[:group] + '.git' +               else +                 repo[@opt[:group]] +               end        end      end +      begin        repo = Rugged::Repository.new repo        update_repo repo, file, data, @msg, @user, @email  | 
