Skip to content
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

Replace linting with black #122

Open
mlenzen opened this issue Nov 25, 2019 · 2 comments · May be fixed by #195
Open

Replace linting with black #122

mlenzen opened this issue Nov 25, 2019 · 2 comments · May be fixed by #195
Labels
style tooling Testing, linting, publishing, ...

Comments

@mlenzen
Copy link
Owner

mlenzen commented Nov 25, 2019

black & flake8 extensions

@mlenzen mlenzen added this to the 2.0 milestone Nov 25, 2019
@mlenzen mlenzen added the style label Dec 30, 2019
@mlenzen mlenzen removed this from the 2.0 milestone Dec 30, 2019
@mlenzen mlenzen added the tooling Testing, linting, publishing, ... label Oct 2, 2020
@mlenzen mlenzen changed the title New tools New linting tools Feb 8, 2021
@mlenzen
Copy link
Owner Author

mlenzen commented Feb 10, 2021

Migrating your code style without ruining git blame

A long-standing argument against moving to automated code formatters like Black is that the migration will clutter up the output of git blame. This was a valid argument, but since Git version 2.23, Git natively supports ignoring revisions in blame with the --ignore-rev option. You can also pass a file listing the revisions to ignore using the --ignore-revs-file option. The changes made by the revision will be ignored when assigning blame. Lines modified by an ignored revision will be blamed on the previous revision that modified those lines.

So when migrating your project's code style to Black, reformat everything and commit the changes (preferably in one massive commit). Then put the full 40 characters commit identifier(s) into a file.

# Migrate code style to Black
5b4ab991dede475d393e9d69ec388fd6bd949699

Afterwards, you can pass that file to git blame and see clean and meaningful blame information.

$ git blame important.py --ignore-revs-file .git-blame-ignore-revs
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 1) def very_important_function(text, file):
abdfd8b0 (Alice Doe  2019-09-23 11:39:32 -0400 2)     text = text.lstrip()
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 3)     with open(file, "r+") as f:
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 4)         f.write(formatted)

You can even configure git to automatically ignore revisions listed in a file on every call to git blame.

$ git config blame.ignoreRevsFile .git-blame-ignore-revs

Source: https://pypi.org/project/black/

@mlenzen mlenzen changed the title New linting tools Replace linting with black Jan 21, 2022
@mlenzen
Copy link
Owner Author

mlenzen commented Jul 15, 2022

@mlenzen mlenzen linked a pull request Jul 16, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
style tooling Testing, linting, publishing, ...
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant