Class: Mutx::Support::Git

Inherits:
Object
  • Object
show all
Defined in:
lib/mutx/support/git.rb

Class Method Summary collapse

Class Method Details

.actual_branchObject



33
# File 'lib/mutx/support/git.rb', line 33

def self.actual_branch; self.branch; end

.add_allObject



44
45
46
# File 'lib/mutx/support/git.rb', line 44

def self.add_all
  Mutx::Support::Console.execute("git add .")
end

.add_commit(msg = nil) ⇒ Object



39
40
41
42
# File 'lib/mutx/support/git.rb', line 39

def self.add_commit msg=nil
  self.add_all
  self.commit msg
end

.add_file(filename) ⇒ Object



48
49
50
# File 'lib/mutx/support/git.rb', line 48

def self.add_file filename
  Mutx::Support::Console.execute("git add #{filename}")
end

.branchObject



24
25
26
27
28
29
30
31
# File 'lib/mutx/support/git.rb', line 24

def self.branch
  branch_name = self.branches.select{|branch| branch.include? "*"}.first
  if branch_name.respond_to? :gsub
    branch_name.gsub("*","").gsub(" ","") unless branch_name.nil?
  else
    branch_name
  end
end

.branch_listObject



8
9
10
11
12
13
14
# File 'lib/mutx/support/git.rb', line 8

def self.branch_list
  self.remote_branches.map do |branch|
    branch.gsub("*","").gsub(" ","").gsub("origin/","")
  end.select do |branch|
    not (branch.include? "HEAD" or branch.include? "/")
  end
end

.branchesObject



35
36
37
# File 'lib/mutx/support/git.rb', line 35

def self.branches
  Mutx::Support::Console.execute("git branch").split("\n")
end

.changed_files_on_last_commitArray

Returns an Array of changed files on last commit

Returns:

  • (Array)
    “path/file_1”,“path/file_2”..“path/file_n”


172
173
174
175
# File 'lib/mutx/support/git.rb', line 172

def self.changed_files_on_last_commit
  res = Mutx::Support::Console.execute("git diff-tree --no-commit-id --name-only -r #{self.get_last_commit_id}")     
  res.split(" ")
end

.checkout_and_pull_from(branch_name = nil) ⇒ Object



106
107
108
109
110
# File 'lib/mutx/support/git.rb', line 106

def self.checkout_and_pull_from branch_name=nil
  self.checkout_to(branch_name) if branch_name
  branch_name = self.branch if branch_name.nil?
  self.pull_from branch_name
end

.checkout_to(branch) ⇒ Object



102
103
104
# File 'lib/mutx/support/git.rb', line 102

def self.checkout_to branch
  Mutx::Support::Console.execute("git checkout #{branch}") unless self.actual_branch == branch
end

.commit(msg = nil) ⇒ Object



73
74
75
76
77
# File 'lib/mutx/support/git.rb', line 73

def self.commit msg = nil
  # self.ensure_being_at_mutx_branch
  msg = "MuTX COMMIT #{Time.new.strftime('%d %m %Y %H:%M:%S')}" if msg.nil?
  Mutx::Support::Console.execute"git commit -m '#{msg}'"
end

.commitsObject



131
132
133
134
# File 'lib/mutx/support/git.rb', line 131

def self.commits
  log = self.log
  log.split("commit")[1..-1] 
end

.commits_idsObject



122
123
124
125
126
127
128
129
# File 'lib/mutx/support/git.rb', line 122

def self.commits_ids
  log = self.log
  log.split('\n').select do |line|
      self.is_commit_id? line
  end.map do |line|
    line.split(" ")[1]
  end
end

.create_branch_and_checkout(branch) ⇒ Object



79
80
81
# File 'lib/mutx/support/git.rb', line 79

def self.create_branch_and_checkout branch
  Mutx::Support::Console.execute("git checkout -b #{branch}")
end

.delete_branch(branch) ⇒ Object



83
84
85
86
# File 'lib/mutx/support/git.rb', line 83

def self.delete_branch branch
  checkout_to "master"
  Mutx::Support::Console.execute("git branch -D #{branch}")
end

.fetchObject



20
21
22
# File 'lib/mutx/support/git.rb', line 20

def self.fetch
  Mutx::Support::Console.execute("git fetch")
end

.get_actual_linesObject

Returns an Array with the existing files on .gitignore

Parameters:

  • (Array)


191
192
193
194
195
196
197
198
# File 'lib/mutx/support/git.rb', line 191

def self.get_actual_lines
  f = File.open("#{Dir.pwd}/.gitignore","r")
  files_list = []
  f.each_line do |line|
    files_list << line.gsub("\n","").gsub(" ","")
  end
  files_list
end

.get_last_commit_idString

Returns las commit id. This method is used by Execution class to verify changes before each execution

Parameters:

  • the (String)

    name of the project (folder project)

Returns:

  • (String)

    the id for the las commit



116
117
118
119
120
# File 'lib/mutx/support/git.rb', line 116

def self.get_last_commit_id
  self.commits_ids.map do |commit|
      commit.gsub("commit ","")
  end.first
end

.git_push_origin_to(branch_name = nil) ⇒ Object



56
57
58
59
# File 'lib/mutx/support/git.rb', line 56

def self.git_push_origin_to branch_name=nil
  branch_name = self.branch if branch_name.nil?
  Mutx::Support::Console.execute("git push origin #{branch_name}")
end

.is_commit_id?(line) ⇒ Boolean

Returns:

  • (Boolean)


136
137
138
# File 'lib/mutx/support/git.rb', line 136

def self.is_commit_id? line
  line.start_with? "commit "
end

.is_there_commit_id_diff?(obtained_commit) ⇒ Bool

Returns true if the obtained commit is different from the last saved commit

Returns:

  • (Bool)


179
180
181
# File 'lib/mutx/support/git.rb', line 179

def self.is_there_commit_id_diff? obtained_commit
    obtained_commit != self.get_last_commit_id
end

.last_commitObject



166
167
168
# File 'lib/mutx/support/git.rb', line 166

def self.last_commit
  self.commits.first
end

.last_remote_commitObject



140
141
142
143
# File 'lib/mutx/support/git.rb', line 140

def self.last_remote_commit
  remotes = self.remote_commits
  remotes.first if remotes.respond_to? :first
end

.logObject



158
159
160
# File 'lib/mutx/support/git.rb', line 158

def self.log
  res = Mutx::Support::Console.execute "git log"
end

.log_last_commitObject



162
163
164
# File 'lib/mutx/support/git.rb', line 162

def self.log_last_commit
  "Commit: #{self.commits.first}"
end

.pullObject

Performs pull from actual branc



89
90
91
# File 'lib/mutx/support/git.rb', line 89

def self.pull
  self.pull_from(self.actual_branch)
end

.pull_from(branch_name = nil) ⇒ Object



93
94
95
96
# File 'lib/mutx/support/git.rb', line 93

def self.pull_from(branch_name=nil)
  branch_name = self.branch if branch_name.nil?
  Mutx::Support::Console.execute("git pull origin #{branch_name}")
end

.pushObject



52
53
54
# File 'lib/mutx/support/git.rb', line 52

def self.push
  Mutx::Support::Console.execute("git push")
end

.push_origin_to_actual_branchObject



69
70
71
# File 'lib/mutx/support/git.rb', line 69

def self.push_origin_to_actual_branch
  git_push_origin_to(self.actual_branch)
end

.remote_branchesObject



16
17
18
# File 'lib/mutx/support/git.rb', line 16

def self.remote_branches
  Mutx::Support::Console.execute("git branch -r").split("\n")
end

.remote_commitsObject



149
150
151
# File 'lib/mutx/support/git.rb', line 149

def self.remote_commits
  self.remote_log.split("commit")[1..-1]
end

.remote_logObject



153
154
155
156
# File 'lib/mutx/support/git.rb', line 153

def self.remote_log
  self.fetch
  Mutx::Support::Console.execute "git log origin/#{self.actual_branch}"
end

.remote_urlObject



184
185
186
187
# File 'lib/mutx/support/git.rb', line 184

def self.remote_url
  res = Mutx::Support::Console.execute("git config --get remote.origin.url").split("\n").first.gsub(":","/").gsub("git@", 'http://').chop
  res[0..-5] if res.end_with? ".git"
end

.reset_hardObject



61
62
63
# File 'lib/mutx/support/git.rb', line 61

def self.reset_hard
  Mutx::Support::Console.execute("git reset --hard")
end

.reset_hard_and_pullObject



65
66
67
# File 'lib/mutx/support/git.rb', line 65

def self.reset_hard_and_pull
  self.reset_hard and self.pull
end

.return_to_branch(branch) ⇒ Object



98
99
100
# File 'lib/mutx/support/git.rb', line 98

def self.return_to_branch branch
  self.checkout_to branch
end

.up_to_date?Boolean

Returns:

  • (Boolean)


145
146
147
# File 'lib/mutx/support/git.rb', line 145

def self.up_to_date?
  self.get_last_commit_id == self.last_remote_commit
end