Module: Rosette::Core::Commands::WithRef
- Included in:
- CommitCommand, EnqueueCommitCommand, ExportCommand, RepoSnapshotCommand, RequeueCommitCommand, ShowCommand, SnapshotCommand, StatusCommand, TranslationLookupCommand, WithNonMergeRef
- Defined in:
- lib/rosette/core/commands/git/with_ref.rb
Overview
Mixin that handles configuration and validation of a git ref or commit id. Meant to be mixed into the classes in Rosette::Core::Commands. Required to be used in combination with WithRepoName.
Instance Attribute Summary collapse
-
#commit_str ⇒ String
readonly
The raw value as set by either #set_ref or #set_commit_id.
Instance Method Summary collapse
-
#commit_id ⇒ String
Resolves the given git ref or commit id and returns the corresponding commit id.
-
#set_commit_id(commit_id) ⇒ self
Set the git commit id.
-
#set_ref(ref_str) ⇒ self
Set the git ref (i.e. a branch name).
Instance Attribute Details
#commit_str ⇒ String (readonly)
Returns the raw value as set by either #set_ref or #set_commit_id.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/rosette/core/commands/git/with_ref.rb', line 36 module WithRef attr_reader :commit_str # Set the git ref (i.e. a branch name). Calling this method after {#set_commit_id} # will overwrite the commit id value. In other words, it's generally a good idea to # only call one of {#set_commit_id} or {#set_ref} but not both. # # @param [String] ref_str The git ref. # @return [self] def set_ref(ref_str) @commit_str = ref_str self end # Set the git commit id. Calling this method after {#set_ref} will overwrite the ref value. # In other words, it's generally a good idea to only call one of {#set_commit_id} or {#set_ref} # but not both. # # @param [String] commit_id The commit id. # @return [self] def set_commit_id(commit_id) @commit_str = commit_id self end # Resolves the given git ref or commit id and returns the corresponding commit id. # If {#set_ref} was used to set a git ref (i.e. branch name), this method looks up # and returns the corresponding commit id. If {#set_commit_id} was used to set a # commit id, then that commit id is validated and returned. # # @return [String] The commit id set via either {#set_ref} or {#set_commit_id}. # @raise [Java::OrgEclipseJgitErrors::MissingObjectException, Java::JavaLang::IllegalArgumentException] # If either the commit id doesn't exist or the ref can't be found. def commit_id @commit_id ||= begin REV_COMMIT_MUTEX.synchronize do get_repo(repo_name) .repo.get_rev_commit(@commit_str) .getId.name end end end private REV_COMMIT_MUTEX = Mutex.new def self.included(base) if base.respond_to?(:validate) base.validate :commit_str, type: :commit end end end |
Instance Method Details
#commit_id ⇒ String
Resolves the given git ref or commit id and returns the corresponding commit id. If #set_ref was used to set a git ref (i.e. branch name), this method looks up and returns the corresponding commit id. If #set_commit_id was used to set a commit id, then that commit id is validated and returned.
69 70 71 72 73 74 75 76 77 |
# File 'lib/rosette/core/commands/git/with_ref.rb', line 69 def commit_id @commit_id ||= begin REV_COMMIT_MUTEX.synchronize do get_repo(repo_name) .repo.get_rev_commit(@commit_str) .getId.name end end end |
#set_commit_id(commit_id) ⇒ self
Set the git commit id. Calling this method after #set_ref will overwrite the ref value. In other words, it’s generally a good idea to only call one of #set_commit_id or #set_ref but not both.
56 57 58 59 |
# File 'lib/rosette/core/commands/git/with_ref.rb', line 56 def set_commit_id(commit_id) @commit_str = commit_id self end |
#set_ref(ref_str) ⇒ self
Set the git ref (i.e. a branch name). Calling this method after #set_commit_id will overwrite the commit id value. In other words, it’s generally a good idea to only call one of #set_commit_id or #set_ref but not both.
45 46 47 48 |
# File 'lib/rosette/core/commands/git/with_ref.rb', line 45 def set_ref(ref_str) @commit_str = ref_str self end |