Class: Fastlane::Actions::PushToGitRemoteAction

Inherits:
Fastlane::Action show all
Defined in:
fastlane/lib/fastlane/actions/push_to_git_remote.rb

Overview

Push local changes to the remote branch

Constant Summary

Constants inherited from Fastlane::Action

Fastlane::Action::AVAILABLE_CATEGORIES, Fastlane::Action::RETURN_TYPES

Class Method Summary collapse

Methods inherited from Fastlane::Action

action_name, authors, deprecated_notes, lane_context, method_missing, other_action, output, return_type, return_value, sample_return_value, shell_out_should_use_bundle_exec?, step_text

Class Method Details

.authorObject


75
76
77
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 75

def self.author
  "lmirosevic"
end

.available_optionsObject


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 41

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :local_branch,
                                 env_name: "FL_GIT_PUSH_LOCAL_BRANCH",
                                 description: "The local branch to push from. Defaults to the current branch",
                                 default_value_dynamic: true,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :remote_branch,
                                 env_name: "FL_GIT_PUSH_REMOTE_BRANCH",
                                 description: "The remote branch to push to. Defaults to the local branch",
                                 default_value_dynamic: true,
                                 optional: true),
    FastlaneCore::ConfigItem.new(key: :force,
                                 env_name: "FL_PUSH_GIT_FORCE",
                                 description: "Force push to remote",
                                 type: Boolean,
                                 default_value: false),
    FastlaneCore::ConfigItem.new(key: :force_with_lease,
                                 env_name: "FL_PUSH_GIT_FORCE_WITH_LEASE",
                                 description: "Force push with lease to remote",
                                 type: Boolean,
                                 default_value: false),
    FastlaneCore::ConfigItem.new(key: :tags,
                                 env_name: "FL_PUSH_GIT_TAGS",
                                 description: "Whether tags are pushed to remote",
                                 type: Boolean,
                                 default_value: true),
    FastlaneCore::ConfigItem.new(key: :remote,
                                 env_name: "FL_GIT_PUSH_REMOTE",
                                 description: "The remote to push to",
                                 default_value: 'origin')
  ]
end

.categoryObject


101
102
103
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 101

def self.category
  :source_control
end

.descriptionObject


37
38
39
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 37

def self.description
  "Push local changes to the remote branch"
end

.detailsObject


79
80
81
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 79

def self.details
  "Lets you push your local commits to a remote git repo. Useful if you make local changes such as adding a version bump commit (using `commit_version_bump`) or a git tag (using 'add_git_tag') on a CI server, and you want to push those changes back to your canonical/main repo."
end

.example_codeObject


87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 87

def self.example_code
  [
    'push_to_git_remote # simple version. pushes "master" branch to "origin" remote',
    'push_to_git_remote(
      remote: "origin",         # optional, default: "origin"
      local_branch: "develop",  # optional, aliased by "branch", default is set to current branch
      remote_branch: "develop", # optional, default is set to local_branch
      force: true,              # optional, default: false
      force_with_lease: true,   # optional, default: false
      tags: false               # optional, default: true
    )'
  ]
end

.is_supported?(platform) ⇒ Boolean

Returns:


83
84
85
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 83

def self.is_supported?(platform)
  true
end

.run(params) ⇒ Object


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'fastlane/lib/fastlane/actions/push_to_git_remote.rb', line 5

def self.run(params)
  local_branch = params[:local_branch]
  local_branch ||= Actions.git_branch.gsub(%r{#{params[:remote]}\/}, '') if Actions.git_branch
  local_branch ||= 'master'

  remote_branch = params[:remote_branch] || local_branch

  # construct our command as an array of components
  command = [
    'git',
    'push',
    params[:remote],
    "#{local_branch.shellescape}:#{remote_branch.shellescape}"
  ]

  # optionally add the tags component
  command << '--tags' if params[:tags]

  # optionally add the force component
  command << '--force' if params[:force]

  # optionally add the force component
  command << '--force-with-lease' if params[:force_with_lease]

  # execute our command
  Actions.sh('pwd')
  return command.join(' ') if Helper.test?

  Actions.sh(command.join(' '))
  UI.message('Successfully pushed to remote.')
end