| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 99c101e8506ea70083dfe1840979021b8822ea5a..42a5eabc18207e364575959ab1d420de7f6f9f12 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -3265,10 +3265,17 @@ def CMDarchive(parser, args):
|
| """Archives and deletes branches associated with closed changelists."""
|
| parser.add_option(
|
| '-j', '--maxjobs', action='store', type=int,
|
| - help='The maximum number of jobs to use when retrieving review status')
|
| + help='The maximum number of jobs to use when retrieving review status.')
|
| parser.add_option(
|
| '-f', '--force', action='store_true',
|
| help='Bypasses the confirmation prompt.')
|
| + parser.add_option(
|
| + '-d', '--dry-run', action='store_true',
|
| + help='Skip the branch tagging and removal steps.')
|
| + parser.add_option(
|
| + '-t', '--notags', action='store_true',
|
| + help='Do not tag archived branches. '
|
| + 'Note: local commit history may be lost.')
|
|
|
| auth.add_auth_options(parser)
|
| options, args = parser.parse_args(args)
|
| @@ -3300,26 +3307,36 @@ def CMDarchive(parser, args):
|
| current_branch = GetCurrentBranch()
|
|
|
| print('\nBranches with closed issues that will be archived:\n')
|
| - print('%*s | %s' % (alignment, 'Branch name', 'Archival tag name'))
|
| - for next_item in proposal:
|
| - print('%*s %s' % (alignment, next_item[0], next_item[1]))
|
| -
|
| - if any(branch == current_branch for branch, _ in proposal):
|
| + if options.notags:
|
| + for next_item in proposal:
|
| + print(' ' + next_item[0])
|
| + else:
|
| + print('%*s | %s' % (alignment, 'Branch name', 'Archival tag name'))
|
| + for next_item in proposal:
|
| + print('%*s %s' % (alignment, next_item[0], next_item[1]))
|
| +
|
| + # Quit now on precondition failure or if instructed by the user, either
|
| + # via an interactive prompt or by command line flags.
|
| + if options.dry_run:
|
| + print('\nNo changes were made (dry run).\n')
|
| + return 0
|
| + elif any(branch == current_branch for branch, _ in proposal):
|
| print('You are currently on a branch \'%s\' which is associated with a '
|
| 'closed codereview issue, so archive cannot proceed. Please '
|
| 'checkout another branch and run this command again.' %
|
| current_branch)
|
| return 1
|
| -
|
| - if not options.force:
|
| + elif not options.force:
|
| answer = ask_for_data('\nProceed with deletion (Y/n)? ').lower()
|
| if answer not in ('y', ''):
|
| print('Aborted.')
|
| return 1
|
|
|
| for branch, tagname in proposal:
|
| - RunGit(['tag', tagname, branch])
|
| + if not options.notags:
|
| + RunGit(['tag', tagname, branch])
|
| RunGit(['branch', '-D', branch])
|
| +
|
| print('\nJob\'s done!')
|
|
|
| return 0
|
|
|