stash: add -e/--externals option to also stash externals

This commit is contained in:
Josh Holtrop 2013-03-11 22:06:18 -04:00
parent a215aac2f6
commit f2678b5f88

23
jsvn
View File

@ -1234,7 +1234,7 @@ def revert_h(argv, svn, out, config):
break
return RET_OK if did_something else RET_REEXEC
def get_svn_contents_to_stash(targets, svn, out, keep, patch):
def get_svn_contents_to_stash(targets, svn, out, keep, patch, externals):
s_fd, s_fname = tempfile.mkstemp(prefix = 'svn.stash.')
r_fd, r_fname = tempfile.mkstemp(prefix = 'svn.stash.')
os.close(s_fd)
@ -1242,6 +1242,14 @@ def get_svn_contents_to_stash(targets, svn, out, keep, patch):
s_fh = open(s_fname, 'w')
r_fh = open(r_fname, 'w')
if externals and len(targets) == 0:
targets = ['.']
proc = Popen([svn, 'status'], stdout=PIPE)
for line in iter(proc.stdout.readline, ''):
m = re.match(r"Performing status on external item at '(.*)':", line)
if m is not None:
targets.append(m.group(1))
svars = {
'revert_list': [],
'skip_all': not patch,
@ -1358,12 +1366,12 @@ q: quit and abort stash
return s_fname, r_fname, svars['revert_list'], svars['n_insertions'], svars['n_deletions']
def stash_save_h(args, svn, out, config, keep, patch):
def stash_save_h(args, svn, out, config, keep, patch, externals):
owd = os.getcwd()
wc_dir = get_svn_wc_root(svn)
os.chdir(wc_dir)
s_fname, r_fname, revert_list, n_insertions, n_deletions = \
get_svn_contents_to_stash(args, svn, out, keep, patch)
get_svn_contents_to_stash(args, svn, out, keep, patch, externals)
if len(revert_list) == 0:
out.write('No changes stashed.\n')
else:
@ -1512,10 +1520,11 @@ def stash_drop_h(argv, svn, out, config):
def stash_h(argv, svn, out, config):
argv = argv[1:] # strip 'stash' command
opts, args = getopt.getopt(argv, 'kp',
['list', 'pop', 'show', 'drop', 'keep', 'patch'])
opts, args = getopt.getopt(argv, 'ekp',
['list', 'pop', 'show', 'drop', 'externals', 'keep', 'patch'])
keep = False
patch = False
externals = False
for opt, arg in opts:
if opt == '--list':
return stash_list_h(args, svn, out, config)
@ -1529,7 +1538,9 @@ def stash_h(argv, svn, out, config):
keep = True
elif opt in ('-p', '--patch'):
patch = True
return stash_save_h(args, svn, out, config, keep, patch)
elif opt in ('-e', '--externals'):
externals = True
return stash_save_h(args, svn, out, config, keep, patch, externals)
def root_h(argv, svn, out, config):
out.write(get_svn_root_url(svn) + '\n')