module GitCli::Stash
Public Instance Methods
stash_changes(msg, include_untracked = true)
click to toggle source
Save all the temporary changes so branch switch is possible
# File lib/git_cli/stash.rb, line 29 def stash_changes(msg, include_untracked = true) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash" cmd << "save" if not_empty?(msg) # have to escape the message for command line purposes msg2 = msg.gsub("\"","\\\"").gsub("\\","\\\\") cmd << msg2 end # always include untracked since the stash condition # is played using scenario under development and must # switch branch for any reasons if include_untracked cmd << "--include-untracked" end cmdln = cmd.join(" ") log_debug "Stash changes : #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end
stash_clear()
click to toggle source
# File lib/git_cli/stash.rb, line 182 def stash_clear check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash clear" cmdln = cmd.join(" ") log_debug "Clear the stash list (all uncommitted changes lost permanently) : #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end
stash_list()
click to toggle source
List all saved temporary changes
# File lib/git_cli/stash.rb, line 65 def stash_list check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash list" cmdln = cmd.join(" ") log_debug "Stash list : #{cmdln}" res = os_exec(cmdln) do |st, res| if st.success? list = { } res.each_line do |l| ll = l.split(": ") # first element is the stash id # 2nd element is the info on branch branch = ll[1].split(" ")[-1] list[ll[0].strip] = [branch, ll[1..-1].join(": ")] end [true, list] else [false, res] end end end
stash_remove(id = nil)
click to toggle source
# File lib/git_cli/stash.rb, line 201 def stash_remove(id = nil) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash drop" if not is_empty?(id) cmd << id end cmdln = cmd.join(" ") log_debug "Stash #{is_empty?(id) ? "remove" : "'#{id}' is being removed"} from list (all uncommitted changes lost permanantly): #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end
stash_restore(id = nil)
click to toggle source
Restore the temporary changes Regardless which branch are you in
# File lib/git_cli/stash.rb, line 104 def stash_restore(id = nil) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash apply" if not is_empty?(id) cmd << id end cmdln = cmd.join(" ") log_debug "Stash apply (restore the saved state) : #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end
stash_restore_and_remove(id = nil)
click to toggle source
# File lib/git_cli/stash.rb, line 129 def stash_restore_and_remove(id = nil) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash pop" if not is_empty?(id) cmd << id end cmdln = cmd.join(" ") log_debug "Stash pop (restore the saved state and delete from list) : #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end
stash_to_new_branch(branch, id = nil)
click to toggle source
# File lib/git_cli/stash.rb, line 154 def stash_to_new_branch(branch, id = nil) raise_if_empty(branch, "Branch name must not be empty for stash to branch operation", GitCliException) check_vcs cmd = [] cmd << "cd" cmd << @wsPath cmd << "&&" cmd << @vcs.exe_path cmd << "stash branch" cmd << branch if not is_empty?(id) cmd << id end cmdln = cmd.join(" ") log_debug "Stash to new branch and delete from list : #{cmdln}" res = os_exec(cmdln) do |st, res| [st.success?, res] end end