diff options
Diffstat (limited to 'lib/oxidized/output/git.rb')
-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 |