Module: Braid::Operations::Helpers

Included in:
Command
Defined in:
lib/braid/operations.rb

Instance Method Summary collapse

Instance Method Details

#clean_svn_revision(revision) ⇒ Object



120
121
122
123
124
125
126
# File 'lib/braid/operations.rb', line 120

def clean_svn_revision(revision)
  if revision
    revision.to_i
  else
    nil
  end
end

#determine_target_commit(params, options) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
# File 'lib/braid/operations.rb', line 163

def determine_target_commit(params, options)
  if options["revision"]
    if params["type"] == "svn"
      invoke(:svn_git_commit_hash, params["local_branch"], options["revision"])
    else
      invoke(:git_rev_parse, options["revision"])
    end
  else
    invoke(:git_rev_parse, params["local_branch"])
  end
end

#display_revision(type, revision) ⇒ Object



175
176
177
# File 'lib/braid/operations.rb', line 175

def display_revision(type, revision)
  type == "svn" ? "r#{revision}" : "'#{revision[0, 7]}'"
end

#find_git_revision(commit) ⇒ Object



114
115
116
117
118
# File 'lib/braid/operations.rb', line 114

def find_git_revision(commit)
  invoke(:git_rev_parse, commit)
rescue Braid::Commands::ShellExecutionError
  raise Braid::Git::UnknownRevision, "unknown revision: #{commit}"
end

#validate_revision_option(params, options) ⇒ Object

Make sure the revision is valid, then clean it.



149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/braid/operations.rb', line 149

def validate_revision_option(params, options)
  if options["revision"]
    case params["type"]
    when "git"
      options["revision"] = find_git_revision(options["revision"])
    when "svn"
      validate_svn_revision(params["revision"], options["revision"], params["remote"])
      options["revision"] = clean_svn_revision(options["revision"])
    end
  end

  true
end

#validate_svn_revision(old_revision, new_revision, path) ⇒ Object



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/braid/operations.rb', line 128

def validate_svn_revision(old_revision, new_revision, path)
  return unless new_revision = clean_svn_revision(new_revision)
  old_revision = clean_svn_revision(old_revision)

  # TODO add checks for unlocked mirrors
  if old_revision
    if new_revision < old_revision
      raise Braid::Commands::LocalRevisionIsHigherThanRequestedRevision
    elsif new_revision == old_revision
      raise Braid::Commands::MirrorAlreadyUpToDate
    end
  end

  if path && invoke(:svn_remote_head_revision, path) < new_revision
    raise Braid::Commands::RequestedRevisionIsHigherThanRemoteRevision
  end

  true
end