add command clean to delete origin and local branches for closed issues
This commit is contained in:
parent
69007372fc
commit
253ff93085
|
@ -555,5 +555,50 @@ def set(project_id):
|
|||
config_writer.write()
|
||||
|
||||
|
||||
@redmine.command()
|
||||
def clean():
|
||||
repo = get_repo()
|
||||
repo.git.fetch(prune=True)
|
||||
api = get_redmine_api()
|
||||
issue_re = re.compile(r'wip/([0-9]+)')
|
||||
issues_to_branch = {}
|
||||
|
||||
origin = repo.remote()
|
||||
for ref in origin.refs:
|
||||
m = issue_re.search(ref.name)
|
||||
if not m:
|
||||
continue
|
||||
issues_to_branch[m.group(1)] = ref.name.lstrip('origin/')
|
||||
if not issues_to_branch:
|
||||
return
|
||||
issues = api.issue.filter(issue_id=','.join(issues_to_branch), status_id='closed')
|
||||
issues_to_delete = list(issues.values_list('id', 'subject'))
|
||||
for _id, _subject in issues_to_delete:
|
||||
print('%5s | %60s | %s' % (_id, issues_to_branch[str(_id)][:60], _subject))
|
||||
if issues_to_delete and click.confirm('Remove theses remote branches ?'):
|
||||
for _id, _subject in issues_to_delete:
|
||||
ref = issues_to_branch[str(_id)]
|
||||
click.echo('Deleting origin/%s... ' % ref, nl=False)
|
||||
origin.push(refspec=':%s' % ref)
|
||||
click.echo(click.style('Done.', fg='green'))
|
||||
|
||||
issues_to_branch = {}
|
||||
for ref in repo.branches:
|
||||
m = issue_re.search(ref.name)
|
||||
if not m:
|
||||
continue
|
||||
issues_to_branch[m.group(1)] = ref.name
|
||||
issues = api.issue.filter(issue_id=','.join(issues_to_branch), status_id='closed')
|
||||
issues_to_delete = list(issues.values_list('id', 'subject'))
|
||||
for _id, _subject in issues_to_delete:
|
||||
print('%5s | %60s | %s' % (_id, issues_to_branch[str(_id)][:60], _subject))
|
||||
if issues_to_delete and click.confirm('Remove theses branches ?'):
|
||||
for _id, _subject in issues_to_delete:
|
||||
ref = issues_to_branch[str(_id)]
|
||||
click.echo('Deleting %s... ' % ref, nl=False)
|
||||
repo.delete_head(ref, force=True)
|
||||
click.echo(click.style('Done.', fg='green'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
redmine()
|
||||
|
|
Loading…
Reference in New Issue