stash: add -e/--externals option to also stash externals
This commit is contained in:
parent
a215aac2f6
commit
f2678b5f88
23
jsvn
23
jsvn
@ -1234,7 +1234,7 @@ def revert_h(argv, svn, out, config):
|
|||||||
break
|
break
|
||||||
return RET_OK if did_something else RET_REEXEC
|
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.')
|
s_fd, s_fname = tempfile.mkstemp(prefix = 'svn.stash.')
|
||||||
r_fd, r_fname = tempfile.mkstemp(prefix = 'svn.stash.')
|
r_fd, r_fname = tempfile.mkstemp(prefix = 'svn.stash.')
|
||||||
os.close(s_fd)
|
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')
|
s_fh = open(s_fname, 'w')
|
||||||
r_fh = open(r_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 = {
|
svars = {
|
||||||
'revert_list': [],
|
'revert_list': [],
|
||||||
'skip_all': not patch,
|
'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']
|
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()
|
owd = os.getcwd()
|
||||||
wc_dir = get_svn_wc_root(svn)
|
wc_dir = get_svn_wc_root(svn)
|
||||||
os.chdir(wc_dir)
|
os.chdir(wc_dir)
|
||||||
s_fname, r_fname, revert_list, n_insertions, n_deletions = \
|
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:
|
if len(revert_list) == 0:
|
||||||
out.write('No changes stashed.\n')
|
out.write('No changes stashed.\n')
|
||||||
else:
|
else:
|
||||||
@ -1512,10 +1520,11 @@ def stash_drop_h(argv, svn, out, config):
|
|||||||
|
|
||||||
def stash_h(argv, svn, out, config):
|
def stash_h(argv, svn, out, config):
|
||||||
argv = argv[1:] # strip 'stash' command
|
argv = argv[1:] # strip 'stash' command
|
||||||
opts, args = getopt.getopt(argv, 'kp',
|
opts, args = getopt.getopt(argv, 'ekp',
|
||||||
['list', 'pop', 'show', 'drop', 'keep', 'patch'])
|
['list', 'pop', 'show', 'drop', 'externals', 'keep', 'patch'])
|
||||||
keep = False
|
keep = False
|
||||||
patch = False
|
patch = False
|
||||||
|
externals = False
|
||||||
for opt, arg in opts:
|
for opt, arg in opts:
|
||||||
if opt == '--list':
|
if opt == '--list':
|
||||||
return stash_list_h(args, svn, out, config)
|
return stash_list_h(args, svn, out, config)
|
||||||
@ -1529,7 +1538,9 @@ def stash_h(argv, svn, out, config):
|
|||||||
keep = True
|
keep = True
|
||||||
elif opt in ('-p', '--patch'):
|
elif opt in ('-p', '--patch'):
|
||||||
patch = True
|
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):
|
def root_h(argv, svn, out, config):
|
||||||
out.write(get_svn_root_url(svn) + '\n')
|
out.write(get_svn_root_url(svn) + '\n')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user