add -k to stash pop to allow keeping stash object - close #13

This commit is contained in:
Josh Holtrop 2012-06-27 09:16:42 -04:00
parent fd8702af29
commit c43a3bd5e9
2 changed files with 11 additions and 5 deletions

4
README
View File

@ -67,9 +67,9 @@ Implemented subcommands:
- this only works with text files, not binary files
list:
- show a list of all stash objects
pop [id]:
pop [-k] [id]:
- apply the stash object <id> back to the working copy
- the stash object is removed if it was successfully applied
- the stash object is removed unless -k (keep) given
- <id> defaults to the newest stash object created
show [id]:
- display the diff stored in stash with ID <id>

12
jsvn
View File

@ -964,20 +964,26 @@ def stash(argv, svn, out):
out.write(')')
out.write('\n')
elif action == 'pop':
keep = False
options, args = getopt.getopt(argv, 'k')
for opt, val in options:
if opt == '-k':
keep = True
owd = os.getcwd()
wc_dir = get_svn_wc_root(svn)
os.chdir(wc_dir)
stash_ids = get_stash_ids(svn)
if len(stash_ids) > 0:
stash_idx = stash_ids[-1]
if len(argv) >= 1:
stash_idx = int(argv[0])
if len(args) >= 1:
stash_idx = int(args[0])
stash_fname = get_stash_fname(svn, stash_idx)
p = Popen([svn, 'patch', stash_fname], stdout=PIPE)
filter_update(p.stdout, out)
rc = p.wait()
if rc == 0:
os.unlink(stash_fname)
if not keep:
os.unlink(stash_fname)
out.write('Popped stash %d\n' % stash_idx)
else:
out.write('Error popping stash %d\n' % stash_idx)