public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: Simon Marchi <simon.marchi@efficios.com>, gdb-patches@sourceware.org
Cc: binutils@sourceware.org, Simon Marchi <simon.marchi@efficios.com>
Subject: Re: [PATCH] gdb: add .pre-commit-config.yaml
Date: Wed, 20 Mar 2024 13:44:05 +0000	[thread overview]
Message-ID: <87jzlxt3ve.fsf@redhat.com> (raw)
In-Reply-To: <20240311150947.71762-1-simon.marchi@efficios.com>

Simon Marchi <simon.marchi@efficios.com> writes:

> [I'm CCing the binutils list because this patch adds a file at the
>  top-level, but it only concerns gdb for now.  But if you are want to use
>  pre-commit for some things in binutils too, you are welcome to use that
>  file for your needs.]
>
> Add a pre-commit [1] config file, with a single hook to run black
> whenever a Python file is modified.  We can always add more hooks if we
> find some that are useful.
>
> Using pre-commit to run hooks is opt-in, as in it's not mandatory at all
> for development, but it can be useful to run some checks that are easy
> to forget (like running black).  The hooks run locally on the
> developer's machine when doing `git commit` (although they can also be
> configured to run at other stages of the git workflow).
>
> Follow these instructions to install the hooks in your local development
> git repository:
>
>  - Install pre-commit the way you prefer.  It can be using your OS
>    package manager if it has a recent enough version, or using `pip
>    install pre-commit`.
>  - Go to the binutils-gdb repository and run `pre-commit install`.
>
> This installs a git hook at `.git/hooks/pre-commit`.
>
> Now, whenever you modify and try to commit a Python file, pre-commit
> will run black on it.  For instance, if I try to insert something
> misformatted, I get this when doing `git commit`:
>
>     $ git commit
>     black....................................................................Failed
>     - hook id: black
>     - files were modified by this hook
>
>     reformatted gdb/python/lib/gdb/dap/breakpoint.py
>
>     All done! ✨ 🍰 ✨
>     1 file reformatted.
>
> At this point, black has already reformatted the files in place, so the
> changes that fix the formatting are ready to add and commit.  black is
> only ran on files modified in the commit.
>
> The hook defines a black version, which is downloaded at `pre-commit
> install` time.  pre-commit manages its own env at
> `$HOME/.cache/pre-commit/<some-hash>`, so it won't use the version of
> black you have installed already.  This may help ensure that
> contributors use the right black version.

This sounds great.  I got a recent commit wrong because the version of
black was rolled forward and I'd not updated locally, so this would
really help.

+1 from me for making this a thing.

Thanks,
Andrew


  parent reply	other threads:[~2024-03-20 13:44 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-11 15:09 Simon Marchi
2024-03-11 20:26 ` Tom Tromey
2024-03-12 10:50 ` Guinevere Larsen
2024-03-20 13:44 ` Andrew Burgess [this message]
2024-03-20 15:56   ` Simon Marchi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87jzlxt3ve.fsf@redhat.com \
    --to=aburgess@redhat.com \
    --cc=binutils@sourceware.org \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@efficios.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).