class Gitmain::Repository
Attributes
branch[R]
name[R]
Public Class Methods
default_branch(value = nil)
click to toggle source
# File lib/gitmain/repository.rb, line 5 def self.default_branch(value = nil) @default_branch = value unless value.to_s.empty? if @default_branch.to_s.empty? 'master' else @default_branch end end
dirname(value = nil)
click to toggle source
# File lib/gitmain/repository.rb, line 15 def self.dirname(value = nil) @dirname = value unless value.to_s.empty? if @dirname.to_s.empty? raise ArgumentError, 'provide a value to set @dirname' else @dirname end end
init(name)
click to toggle source
# File lib/gitmain/repository.rb, line 25 def self.init(name) raise ArgumentError, 'provide a valid name' unless name.match(/\A[\w\-]+\z/) Rugged::Repository.init_at(File.join(dirname, "#{name}.git"), :bare) new(name) end
new(name, branch = self.class.default_branch)
click to toggle source
# File lib/gitmain/repository.rb, line 31 def initialize(name, branch = self.class.default_branch) raise ArgumentError, 'provide a valid name' unless name.match(/\A[\w\-]+\z/) raise ArgumentError, 'provide a valid branch' unless branch.match(/\A[\w\-]+\z/) begin @_repo = Rugged::Repository.new(File.join(self.class.dirname, "#{name}.git")) rescue raise ArgumentError, 'could not load repository' end unless @_repo.bare? raise ArgumentError, 'must be a bare repository' end if @_repo.branches.each_name.include?(branch) @_branch = @_repo.branches[branch] elsif !@_repo.empty? raise ArgumentError, 'must provide an existing branch' end @name = name @branch = branch end
Public Instance Methods
checkout(branch)
click to toggle source
# File lib/gitmain/repository.rb, line 63 def checkout(branch) if @_repo.branches.each_name.include?(branch) @_branch = @_repo.branches[branch] @branch = branch elsif @_repo.branches.each_name.include?(self.class.default_branch) @_branch = @_repo.branches.create(branch, self.class.default_branch) @branch = branch else raise ArgumentError, "default branch not yet setup" end end
commit(klass: Gitmain::Commit)
click to toggle source
# File lib/gitmain/repository.rb, line 55 def commit(klass: Gitmain::Commit) klass.new(self, commit_id) if commit_id end
commit_id()
click to toggle source
# File lib/gitmain/repository.rb, line 59 def commit_id @_branch&.target&.oid end
rename(name)
click to toggle source
# File lib/gitmain/repository.rb, line 75 def rename(name) FileUtils.mv(File.join(self.class.dirname, "#@name.git"), File.join(self.class.dirname, "#{name}.git")) @_repo = Rugged::Repository.new(File.join(self.class.dirname, "#{name}.git")) @name = name end
rugged(id)
click to toggle source
# File lib/gitmain/repository.rb, line 81 def rugged(id) @_repo&.lookup(id) end
setup?()
click to toggle source
# File lib/gitmain/repository.rb, line 85 def setup? @_repo && !@_repo.empty? && @_repo.branches[self.class.default_branch] end
tree(klass: Gitmain::Tree)
click to toggle source
# File lib/gitmain/repository.rb, line 89 def tree(klass: Gitmain::Tree) klass.new(self, tree_id) if tree_id end
tree_id()
click to toggle source
# File lib/gitmain/repository.rb, line 93 def tree_id @_branch&.target&.tree_id end