Class: EY::Serverside::Strategies::Git

Inherits:
Object
  • Object
show all
Includes:
LoggedOutput
Defined in:
lib/engineyard-serverside/strategies/git.rb

Defined Under Namespace

Modules: Helpers

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from LoggedOutput

#debug, #info, logfile, logfile=, #logged_system, verbose=, verbose?, #verbose?, #warning

Constructor Details

#initialize(opts) ⇒ Git

Returns a new instance of Git.



44
45
46
# File 'lib/engineyard-serverside/strategies/git.rb', line 44

def initialize(opts)
  @opts = opts
end

Instance Attribute Details

#optsObject (readonly)

Returns the value of attribute opts.



42
43
44
# File 'lib/engineyard-serverside/strategies/git.rb', line 42

def opts
  @opts
end

Instance Method Details

#checkoutObject



61
62
63
64
65
66
67
68
69
70
# File 'lib/engineyard-serverside/strategies/git.rb', line 61

def checkout
  info "~> Deploying revision #{short_log_message(to_checkout)}"
  in_git_work_tree do
    (logged_system("git checkout -q '#{to_checkout}'") ||
      logged_system("git reset -q --hard '#{to_checkout}'")) &&
      logged_system("git submodule sync") &&
      logged_system("git submodule update --init") &&
      logged_system("git clean -dfq")
  end
end

#create_revision_file_command(dir) ⇒ Object



82
83
84
# File 'lib/engineyard-serverside/strategies/git.rb', line 82

def create_revision_file_command(dir)
  %Q{#{git} show --pretty=format:"%H" | head -1 > "#{dir}/REVISION"}
end

#fetchObject



52
53
54
55
56
57
58
59
# File 'lib/engineyard-serverside/strategies/git.rb', line 52

def fetch
  if usable_repository?
    logged_system("#{git} fetch -q origin 2>&1")
  else
    FileUtils.rm_rf(opts[:repository_cache])
    logged_system("git clone -q #{opts[:repo]} #{opts[:repository_cache]} 2>&1")
  end
end

#short_log_message(rev) ⇒ Object



86
87
88
# File 'lib/engineyard-serverside/strategies/git.rb', line 86

def short_log_message(rev)
  `#{git} log --pretty=oneline --abbrev-commit -n 1 '#{rev}'`.strip
end

#to_checkoutObject



72
73
74
75
76
77
78
79
80
# File 'lib/engineyard-serverside/strategies/git.rb', line 72

def to_checkout
  return @to_checkout if @opts_ref == opts[:ref]
  @opts_ref = opts[:ref]
  @to_checkout = if branch?(opts[:ref])
    "origin/#{opts[:ref]}"
  else
    opts[:ref]
  end
end

#usable_repository?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/engineyard-serverside/strategies/git.rb', line 48

def usable_repository?
  File.directory?(opts[:repository_cache]) && `#{git} remote -v | grep origin`[opts[:repo]]
end