add -v (verbose) flag to tag subcommand
This commit is contained in:
parent
3b7bf12da8
commit
b1df2f7a12
3
README
3
README
@ -80,7 +80,8 @@ Implemented subcommands:
|
|||||||
the full URL
|
the full URL
|
||||||
- falls back to Subversion "switch" if <short_name> doesn't exist
|
- falls back to Subversion "switch" if <short_name> doesn't exist
|
||||||
tag[s]
|
tag[s]
|
||||||
- tag: list tags
|
- tag [-v]: list tags
|
||||||
|
- with -v (verbose), lists tag origin and creation date
|
||||||
- tag -d name: delete tag <name>
|
- tag -d name: delete tag <name>
|
||||||
- tag -m old new: rename tag <old> to <new>
|
- tag -m old new: rename tag <old> to <new>
|
||||||
- tag name [source[@rev]]: create tag <name>
|
- tag name [source[@rev]]: create tag <name>
|
||||||
|
42
jsvn
42
jsvn
@ -748,9 +748,10 @@ def branch_h(argv, svn, out, config):
|
|||||||
# tag name [source[@rev]] # create tag <name> [from source [at revision rev]]
|
# tag name [source[@rev]] # create tag <name> [from source [at revision rev]]
|
||||||
def tag_h(argv, svn, out, config):
|
def tag_h(argv, svn, out, config):
|
||||||
argv = argv[1:] # strip command
|
argv = argv[1:] # strip command
|
||||||
options, args = getopt.getopt(argv, 'dm')
|
options, args = getopt.getopt(argv, 'dmv')
|
||||||
origin = get_svn_top_level(svn)
|
origin = get_svn_top_level(svn)
|
||||||
root = get_svn_root_url(svn)
|
root = get_svn_root_url(svn)
|
||||||
|
verbose = False
|
||||||
if origin == '' or root == '':
|
if origin == '' or root == '':
|
||||||
sys.stderr.write("Could not determine origin/root URL\n")
|
sys.stderr.write("Could not determine origin/root URL\n")
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
@ -781,13 +782,50 @@ def tag_h(argv, svn, out, config):
|
|||||||
'-m', "Renamed tag '%s' to '%s'" % (old_tag_name, tag_name)],
|
'-m', "Renamed tag '%s' to '%s'" % (old_tag_name, tag_name)],
|
||||||
stdout=out).wait()
|
stdout=out).wait()
|
||||||
return RET_OK
|
return RET_OK
|
||||||
|
elif opt == '-v':
|
||||||
|
verbose = True
|
||||||
else:
|
else:
|
||||||
sys.stderr.write('Unrecognized option to "tag" command\n')
|
sys.stderr.write('Unrecognized option to "tag" command\n')
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
tag_list.sort()
|
tag_list.sort()
|
||||||
|
max_tagname_length = 0
|
||||||
|
if verbose:
|
||||||
for t in tag_list:
|
for t in tag_list:
|
||||||
out.write(t + '\n')
|
if len(t) > max_tagname_length:
|
||||||
|
max_tagname_length = len(t)
|
||||||
|
for t in tag_list:
|
||||||
|
if verbose:
|
||||||
|
out.write(('%%-%ds' % max_tagname_length) % t)
|
||||||
|
date = ''
|
||||||
|
origin = ''
|
||||||
|
rev = ''
|
||||||
|
pout = Popen([svn, 'log', '-v', '--stop-on-copy', '%s/tags/%s' % (root, t)],
|
||||||
|
stdout=PIPE).stdout
|
||||||
|
for line in iter(pout.readline, ''):
|
||||||
|
m = re.match(r'r\d+\s*\|[^|]+\|\s*(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2})', line)
|
||||||
|
if m is not None:
|
||||||
|
date = m.group(1)
|
||||||
|
m = re.match(r'\s\s\sA\s.*\/tags\/%s\s\(from\s(.*):(\d+)' % t, line)
|
||||||
|
if m is not None:
|
||||||
|
origin = re.sub(r'.*\/(trunk|tags|branches)\b', r'\1', m.group(1))
|
||||||
|
rev = m.group(2)
|
||||||
|
if date != '':
|
||||||
|
out.write(' ')
|
||||||
|
ansi_color(out, 'magenta')
|
||||||
|
out.write(date)
|
||||||
|
ansi_reset(out)
|
||||||
|
if origin != '':
|
||||||
|
out.write(' ')
|
||||||
|
ansi_color(out, 'yellow')
|
||||||
|
out.write(origin)
|
||||||
|
ansi_reset(out)
|
||||||
|
ansi_color(out, 'blue', bold=True)
|
||||||
|
out.write('@' + rev)
|
||||||
|
ansi_reset(out)
|
||||||
|
else:
|
||||||
|
out.write(t)
|
||||||
|
out.write('\n')
|
||||||
return RET_OK
|
return RET_OK
|
||||||
tag_name = args[0]
|
tag_name = args[0]
|
||||||
if tag_name in tag_list:
|
if tag_name in tag_list:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user