3517
3517
Option('commit-time', type=text_type,
3518
3518
help="Manually set a commit time using commit date "
3519
3519
"format, e.g. '2009-10-10 08:00:00 +0100'."),
3520
ListOption('bugs', type=text_type,
3521
help="Link to a related bug. (see \"brz help bugs\")."),
3520
3522
ListOption('fixes', type=text_type,
3521
3523
help="Mark a bug as being fixed by this revision "
3522
3524
"(see \"brz help bugs\")."),
3540
3542
aliases = ['ci', 'checkin']
3542
def _iter_bug_fix_urls(self, fixes, branch):
3544
def _iter_bug_urls(self, bugs, branch, status):
3543
3545
default_bugtracker = None
3544
3546
# Configure the properties for bug fixing attributes.
3545
for fixed_bug in fixes:
3546
tokens = fixed_bug.split(':')
3548
tokens = bug.split(':')
3547
3549
if len(tokens) == 1:
3548
3550
if default_bugtracker is None:
3549
3551
branch_config = branch.get_config_stack()
3555
3557
"'tracker:id' or specify a default bug tracker "
3556
3558
"using the `bugtracker` option.\nSee "
3557
3559
"\"brz help bugs\" for more information on this "
3558
"feature. Commit refused.") % fixed_bug)
3560
"feature. Commit refused.") % bug)
3559
3561
tag = default_bugtracker
3560
3562
bug_id = tokens[0]
3561
3563
elif len(tokens) != 2:
3562
3564
raise errors.BzrCommandError(gettext(
3563
3565
"Invalid bug %s. Must be in the form of 'tracker:id'. "
3564
3566
"See \"brz help bugs\" for more information on this "
3565
"feature.\nCommit refused.") % fixed_bug)
3567
"feature.\nCommit refused.") % bug)
3567
3569
tag, bug_id = tokens
3569
yield bugtracker.get_bug_url(tag, branch, bug_id)
3571
yield bugtracker.get_bug_url(tag, branch, bug_id), status
3570
3572
except bugtracker.UnknownBugTrackerAbbreviation:
3571
3573
raise errors.BzrCommandError(gettext(
3572
'Unrecognized bug %s. Commit refused.') % fixed_bug)
3574
'Unrecognized bug %s. Commit refused.') % bug)
3573
3575
except bugtracker.MalformedBugIdentifier as e:
3574
3576
raise errors.BzrCommandError(gettext(
3575
3577
u"%s\nCommit refused.") % (e,))
3577
3579
def run(self, message=None, file=None, verbose=False, selected_list=None,
3578
unchanged=False, strict=False, local=False, fixes=None,
3580
unchanged=False, strict=False, local=False, fixes=None, bugs=None,
3579
3581
author=None, show_diff=False, exclude=None, commit_time=None,
3581
3584
from .commit import (
3582
3585
PointlessCommit,
3612
3615
if fixes is None:
3614
3619
bug_property = bugtracker.encode_fixes_bug_urls(
3615
self._iter_bug_fix_urls(fixes, tree.branch))
3621
self._iter_bug_urls(bugs, tree.branch, bugtracker.RELATED),
3622
self._iter_bug_urls(fixes, tree.branch, bugtracker.FIXED)))
3616
3623
if bug_property:
3617
3624
properties[u'bugs'] = bug_property