Class: Gollum::Git::Repo

Inherits:
Object
  • Object
show all
Defined in:
lib/rugged_adapter/git_layer_rugged.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, options) ⇒ Repo

Returns a new instance of Repo.



566
567
568
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 566

def initialize(path, options)
  @repo = Rugged::Repository.new(path, **options)
end

Class Method Details

.init(path) ⇒ Object



570
571
572
573
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 570

def self.init(path)
  Rugged::Repository.init_at(path, false)
  self.new(path, :is_bare => false)
end

.init_bare(path) ⇒ Object



575
576
577
578
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 575

def self.init_bare(path)
  Rugged::Repository.init_at(path, true)
  self.new(path, :is_bare => true)
end

Instance Method Details

#bareObject



580
581
582
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 580

def bare
  @repo.bare?
end

#commit(id) ⇒ Object



592
593
594
595
596
597
598
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 592

def commit(id)
  begin
    git.commit_from_ref(id)
  rescue
    raise Gollum::Git::NoSuchShaFound
  end
end

#commits(start = 'refs/heads/master', max_count = 10, skip = 0) ⇒ Object



600
601
602
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 600

def commits(start = 'refs/heads/master', max_count = 10, skip = 0)
  git.log(start, nil, :max_count => max_count, :skip => skip)
end

#configObject



584
585
586
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 584

def config
  @repo.config
end

#diff(sha1, sha2, *paths) ⇒ Object



616
617
618
619
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 616

def diff(sha1, sha2, *paths)
  opts = paths.nil? ? {} : {:paths => paths}
  @repo.diff(sha1, sha2, opts).patch
end

#gitObject



588
589
590
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 588

def git
  @git ||= Gollum::Git::Git.new(@repo)
end

#headObject



604
605
606
607
608
609
610
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 604

def head
  begin
    return Gollum::Git::Ref.new(@repo.head)
  rescue Rugged::ReferenceError
    return nil
  end
end

#indexObject



612
613
614
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 612

def index
  @index ||= Gollum::Git::Index.new(@repo.index, @repo)
end

#log(commit = 'refs/heads/master', path = nil, options = {}) ⇒ Object



621
622
623
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 621

def log(commit = 'refs/heads/master', path = nil, options = {})
  git.log(commit, path, options)
end

#lstree(sha, options = {}) ⇒ Object



625
626
627
628
629
630
631
632
633
634
635
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 625

def lstree(sha, options = {})
  results = []
  @repo.lookup(sha).tree.walk(:postorder) do |root, entry|
    entry[:sha] = entry[:oid]
    entry[:mode] = entry[:filemode].to_s(8)
    entry[:type] = entry[:type].to_s
    entry[:path] = "#{root}#{entry[:name]}"
    results << entry
  end
  results
end

#pathObject



637
638
639
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 637

def path
  @repo.path
end

#update_ref(ref, commit_sha) ⇒ Object

Checkout branch and if necessary first create it. Currently used only in gollum-lib’s tests.



642
643
644
645
646
647
648
649
650
# File 'lib/rugged_adapter/git_layer_rugged.rb', line 642

def update_ref(ref, commit_sha)
  ref = "refs/heads/#{ref}" unless ref =~ /^refs\/heads\//
  if _ref = @repo.references[ref]
    @repo.references.update(_ref, commit_sha)
  else
    @repo.create_branch(ref, commit_sha)
    @repo.checkout(ref, :strategy => :force) unless @repo.bare?
  end
end