48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from git import GitWindowCommand
|
|
|
|
|
|
class GitStashCommand(GitWindowCommand):
|
|
may_change_files = True
|
|
|
|
def run(self):
|
|
self.run_command(['git', 'stash'])
|
|
|
|
|
|
class GitStashPopCommand(GitWindowCommand):
|
|
def run(self):
|
|
self.run_command(['git', 'stash', 'pop'])
|
|
|
|
|
|
class GitStashApplyCommand(GitWindowCommand):
|
|
may_change_files = True
|
|
command_to_run_after_list = 'apply'
|
|
|
|
def run(self):
|
|
self.run_command(['git', 'stash', 'list'], self.stash_list_done)
|
|
|
|
def stash_list_done(self, result):
|
|
# No stash list at all
|
|
if not result:
|
|
self.panel('No stash found')
|
|
return
|
|
|
|
self.results = result.rstrip().split('\n')
|
|
|
|
# If there is only one, apply it
|
|
if len(self.results) == 1:
|
|
self.stash_list_panel_done()
|
|
else:
|
|
self.quick_panel(self.results, self.stash_list_panel_done)
|
|
|
|
def stash_list_panel_done(self, picked=0):
|
|
if 0 > picked < len(self.results):
|
|
return
|
|
|
|
# get the stash ref (e.g. stash@{3})
|
|
self.stash = self.results[picked].split(':')[0]
|
|
self.run_command(['git', 'stash', self.command_to_run_after_list, self.stash])
|
|
|
|
|
|
class GitStashDropCommand(GitStashApplyCommand):
|
|
command_to_run_after_list = 'drop'
|