Module: Luban::Deployment::Application::Repository::SCM::Git

Defined in:
lib/luban/deployment/cli/application/scm/git.rb

Instance Method Summary collapse

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 9

def available?
  test(git_cmd, 'ls-remote --heads', from)
end

#branch?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 38

def branch?
  within(clone_path) { test(git_cmd, :"show-ref", "--quite --verify refs/heads/#{version}") }
end

#cloneObject



26
27
28
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 26

def clone
  test(git_cmd, :clone, '--mirror', from, clone_path)
end

#cloned?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 13

def cloned?
  file?(clone_path.join("HEAD")) and from == remote_origin
end

#commit?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 46

def commit?
  version =~ /^\h+/ and !revision.nil?
end

#fetch_revisionObject



21
22
23
24
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 21

def fetch_revision
  within(clone_path) { capture(git_cmd, "rev-parse --short=#{rev_size} #{version} 2>/dev/null") }
  #within(clone_path) { capture(git_cmd, "rev-list --max-count=1 --abbrev-commit --abbrev=rev_size #{version}") }
end

#git_cmdObject



7
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 7

def git_cmd; :git; end

#releaseObject



34
35
36
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 34

def release
  within(clone_path) { test(git_cmd, :archive, version, "--format=#{release_package_extname} --prefix=#{release_tag}/ -o #{release_package_path}") }
end

#release_tagObject



50
51
52
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 50

def release_tag
  @release_tag ||= commit? ? "ref-#{revision}" : super
end

#remote_originObject



17
18
19
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 17

def remote_origin
  within(clone_path) { capture(git_cmd, "config --get remote.origin.url 2>/dev/null") }
end

#tag?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 42

def tag?
  within(clone_path) {test(git_cmd, :"show-ref", "--quite --verify refs/tags/#{version}") }
end

#updateObject



30
31
32
# File 'lib/luban/deployment/cli/application/scm/git.rb', line 30

def update
  within(clone_path) { test(git_cmd, :remote, :update, "--prune") }
end