Class: Hub::Context::Branch

Inherits:
Struct
  • Object
show all
Defined in:
lib/hub/context.rb

Instance Method Summary collapse

Instance Method Details

#master?Boolean

Returns:

  • (Boolean)


346
347
348
349
350
351
# File 'lib/hub/context.rb', line 346

def master?
  master_name = if local_repo then local_repo.master_branch.short_name
  else 'master'
  end
  short_name == master_name
end

#push_target(owner_name, prefer_upstream = false) ⇒ Object



359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
# File 'lib/hub/context.rb', line 359

def push_target(owner_name, prefer_upstream = false)
  push_default = local_repo.git_config('push.default')
  if %w[upstream tracking].include?(push_default)
    upstream
  else
    short = short_name
    refs = local_repo.remotes_for_publish(owner_name).map { |remote|
      "refs/remotes/#{remote}/#{short}"
    }
    refs.reverse! if prefer_upstream
    if branch = refs.detect {|ref| local_repo.file_exist?(ref) }
      Branch.new(local_repo, branch)
    end
  end
end

#remote?Boolean

Returns:

  • (Boolean)


375
376
377
# File 'lib/hub/context.rb', line 375

def remote?
  name.index('refs/remotes/') == 0
end

#remote_nameObject



379
380
381
382
# File 'lib/hub/context.rb', line 379

def remote_name
  name =~ %r{^refs/remotes/([^/]+)} and $1 or
    raise Error, "can't get remote name from #{name.inspect}"
end

#short_nameObject



342
343
344
# File 'lib/hub/context.rb', line 342

def short_name
  name.sub(%r{^refs/(remotes/)?.+?/}, '')
end

#upstreamObject



353
354
355
356
357
# File 'lib/hub/context.rb', line 353

def upstream
  if branch = local_repo.git_command("rev-parse --symbolic-full-name #{short_name}@{upstream}")
    Branch.new local_repo, branch
  end
end