-
-
Notifications
You must be signed in to change notification settings - Fork 60
blurb: get BPO# from branch, add commit template #184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -75,7 +75,7 @@ | |
# | ||
# Please enter the relevant bugs.python.org issue number here: | ||
# | ||
.. bpo: | ||
.. bpo: {bpo} | ||
|
||
# | ||
# Uncomment one of these "section:" lines to specify which section | ||
|
@@ -838,24 +838,14 @@ def add(): | |
os.close(handle) | ||
atexit.register(lambda : os.unlink(tmp_path)) | ||
|
||
def init_tmp_with_template(): | ||
with open(tmp_path, "wt", encoding="utf-8") as f: | ||
# hack: | ||
# my editor likes to strip trailing whitespace from lines. | ||
# normally this is a good idea. but in the case of the template | ||
# it's unhelpful. | ||
# so, manually ensure there's a space at the end of the bpo line. | ||
text = template | ||
|
||
bpo_line = ".. bpo:" | ||
without_space = "\n" + bpo_line + "\n" | ||
with_space = "\n" + bpo_line + " \n" | ||
if without_space not in text: | ||
sys.exit("Can't find BPO line to ensure there's a space on the end!") | ||
text = text.replace(without_space, with_space) | ||
f.write(text) | ||
# see of the branch name indicated BPO number | ||
# makes the 'editor strips trailing whitespace from template lines' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Given that your patch obviates (and subsequently removes) the hack in question, this two-line comment is meaningless. |
||
# hack obsolete, too. | ||
branch_bpo, branch_suffix = get_bpo_git_branch() | ||
|
||
init_tmp_with_template() | ||
with open(tmp_path, "wt", encoding="utf-8") as f: | ||
text = template.format(bpo=branch_bpo) | ||
f.write(text) | ||
|
||
while True: | ||
subprocess.run([editor, tmp_path]) | ||
|
@@ -888,6 +878,18 @@ def init_tmp_with_template(): | |
path = blurb.save_next() | ||
git_add_files.append(path) | ||
flush_git_add_files() | ||
|
||
# For convenience, write a preformatted commit template. Enable template | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Again, a minor suggestion regarding your English here. The first sentence is fine, for the second may I suggest "You can tell git to use this template with "git config commit.template .git/blurb"." It's not a big deal, but I don't know why you use `` to quote the command here. Simple double-quotes are fine, and if you want something clearer I would indent and put a % to indicate a command prompt. Also, based on the code, it looks like
Does git create the directory for you? If not, we should probably suggest that too in the comment, or else people will follow the instructions only to discover that they don't work. |
||
# with ``git config commit.template .git/blurb``. | ||
msgfile = os.path.join(root, '.git', 'blurb') | ||
if os.path.isdir(os.path.dirname(msgfile)): | ||
metadata, text = blurb[0] | ||
title = branch_suffix.replace('-', ' ').replace('_', ' ') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't like this. You are replacing all dashes and all underscores with spaces here. This means that a branch called If we honor the name of the branch, we should honor the name of the branch. There are legitimate uses for underscores and dashes, and stripping them all out is more surprising than simply leaving them there. I realize git doesn't permit spaces in branch names, so we can't simply write a wonderful commit message in the branch name and have it emerge from the other end of the process perfectly. Ultimately, leaving the dashes and underscores there may be a little inelegant but that's better than outright corrupted. Please remove this line and resubmit the PR. |
||
with open(msgfile, 'wt', encoding="utf-8") as f: | ||
f.write(f"bpo-{metadata['bpo']}: {title}\n") | ||
f.write("\n") | ||
f.write(text) | ||
|
||
print("Ready for commit.") | ||
|
||
|
||
|
@@ -1067,6 +1069,29 @@ def flush_git_rm_files(): | |
git_rm_files.clear() | ||
|
||
|
||
def get_bpo_git_branch(): | ||
"""Try to detect bpo number from branch name | ||
|
||
Supports: | ||
bpo1234 | ||
bpo_1234 | ||
bpo-1234 | ||
|
||
returns: branch number, branch suffix | ||
""" | ||
try: | ||
p = subprocess.run(["git", "rev-parse", "--abbrev-ref", "HEAD"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) | ||
p.check_returncode() | ||
except subprocess.CalledProcessError: | ||
return '', '' | ||
branch = p.stdout.decode('utf-8').strip() | ||
mo = re.match("^bpo[-_]?(\d+)[-_]?(.*)", branch) | ||
if mo is not None: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Eschew The Unnecessary Else! I propose you rewrite these four lines as:
|
||
return mo.group(1), mo.group(2) | ||
else: | ||
return '', branch | ||
|
||
|
||
# @subcommand | ||
# def noop(): | ||
# "Do-nothing command. Used for blurb smoke-testing." | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I realize English is not your first language; may I propose "see if the branch name indicates the BPO number"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our current PEP 8 standard for stdlib comments is to make them complete sentences, with initial cap and period, as in
# See if the branch name indicates the BPO number.
Many old comments do not meet this standard, but new or edited ones should
-- unless Larry as blurb author disagrees ;-).