Sha256: 84b4d09aaee0098250c9109e12fdf9e913eeca23dcc8495127fcf9d289d18784
Contents?: true
Size: 1.57 KB
Versions: 1
Compression:
Stored size: 1.57 KB
Contents
module Dandelion class RevisionError < StandardError; end class Workspace attr_reader :adapter, :config def initialize(repo, adapter, config = nil) @repo = repo @adapter = adapter if config.is_a?(Hash) @config = Config.new(data: config) else @config = config || Config.new end @config.defaults(revision_file: '.revision', local_path: '') end def tree Tree.new(@repo, local_commit) end def changeset Changeset.new(tree, remote_commit, @config) end def local_commit lookup(local_sha) end def remote_commit sha = remote_sha sha ? lookup(remote_sha) : nil end def remote_commit=(commit) self.remote_sha = commit.oid end private def lookup(val) result = lookup_sha(val) || lookup_ref(val) || lookup_ref("refs/tags/#{val}") || lookup_ref("refs/branches/#{val}") || lookup_ref("refs/heads/#{val}") raise RevisionError.new(val) unless result result end def lookup_sha(val) @repo.lookup(val) rescue Rugged::OdbError, Rugged::InvalidError nil end def lookup_ref(val) ref = @repo.ref(val) lookup_sha(ref.target) if ref rescue Rugged::ReferenceError nil end def local_sha @config[:revision] || @repo.head.target end def remote_sha @remote_sha ||= @adapter.read(@config[:revision_file]) end def remote_sha=(sha) @adapter.write(@config[:revision_file], sha) @remote_sha = sha end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dandelion-0.4.6 | lib/dandelion/workspace.rb |