class Gerrit::Command::Checkout
Check out a patchset locally.
Public Instance Methods
execute()
click to toggle source
# File lib/gerrit/command/checkout.rb, line 4 def execute refspec = change_refspec ui.spinner('Fetching patchset...') do result = spawn(%W[git fetch #{repo.remote_url} #{refspec}]) if result.success? spawn(%w[git checkout FETCH_HEAD]) end end ui.newline ui.success "You have checked out #{refspec}" end
Private Instance Methods
change_metadata()
click to toggle source
# File lib/gerrit/command/checkout.rb, line 33 def change_metadata change_num_or_id = if arguments[1] arguments[1] else ui.ask('Enter change number or Change-ID').argument(:required).read_string end ui.spinner('Finding latest patchset...') do client.change(change_num_or_id) end end
change_refspec()
click to toggle source
Returns the latest refspec for the given change number.
# File lib/gerrit/command/checkout.rb, line 21 def change_refspec change_md = change_metadata change_number = change_md['number'] patchset = change_md['currentPatchSet']['number'] # Gerrit takes the last two digits of the change number to nest under a # directory with that name so they don't exceed the per-directory file limit prefix = change_number.rjust(2, '0').to_s[-2..-1] "refs/changes/#{prefix}/#{change_number}/#{patchset}" end