[PATCH] D90996: [clang-format] Add --staged/--cached option to git-clang-format

Erik Larsson via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 21 01:33:28 PDT 2021


ortogonal added a comment.

Thanks for looking into this!

The feature `--staged` adds the possibility to ONLY run clang format on what is staged.

Lets say you have main.cpp where you have done two changes. You stage one of them using:

  $ git add -p main.cpp

You now have a state were one of the changes is staged for commit but not the other.

  $ git status
  On branch master
  Changes to be committed:
    (use "git restore --staged <file>..." to unstage)
          modified:   main.cpp
  
  Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
          modified:   main.cpp

If you now run `git-clang-format` it will format all changes in main.cpp, but at this stage adding `--staged` to git-clang-format lets you only format what is staged in that file.

I use this together with a git pre-commit-hook to make sure that all my code changes are formatted correctly before I commit. But without the `--staged` option I end up in situations were my pre-commit-hook fails because I have part of a files staged and a formatting error in the part of the file that is not staged.

Does this make the need for `--staged` clearer?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90996/new/

https://reviews.llvm.org/D90996



More information about the cfe-commits mailing list