-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
ci: add pre-commit hook to remove trailing whitespaces #73
base: main
Are you sure you want to change the base?
ci: add pre-commit hook to remove trailing whitespaces #73
Conversation
\### Goal - reduce the tedious chore of removing trailing whitespaces - ref. joelparkerhenderson#69 (comment) \### Descriptions - add pre-commit hook to remove trailing whitespaces - flow - collect the staged files - check if any of these files have whitespace issues - if so, cleanup process - loop through the files and apply git-stripspace \### Requirements - `git config core.hooksPath .githooks` to activate the hook - `git config core.quotepath false` for non-ascii paths - also need to be documented(where?) \### Test - trailing spaces in following diff are cleaned up - works on all type of file even for codes, not only for markdowns(docs) ```diff diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100644 index 0000000..4d25c49 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,37 @@ +#!/bin/sh + +# Temporary file to store the list of files that need cleanup +TEMP_FILE=$(mktemp) + +# Collect staged files with potential whitespace issues +git diff --cached --name-only --diff-filter=ACM > "$TEMP_FILE" + +# Check if any of these files have whitespace issues +NEEDS_CLEANUP=false +while read -r FILE; do + if ! git diff --cached --check -- "$FILE"; then + NEEDS_CLEANUP=true + break + fi +done < "$TEMP_FILE" + +# Cleanup process +if [ "$NEEDS_CLEANUP" = true ]; then + # Loop through the files and apply git-stripspace + while read -r FILE; do + git show ":$FILE" | git stripspace > "$FILE" + git add "$FILE" + done < "$TEMP_FILE" + + # Inform the user + echo 'Cleanup trailing whitespaces is done' +fi + +# Clean up - remove the temporary file +rm "$TEMP_FILE" + +if [ "$NEEDS_CLEANUP" = false ]; then + echo "no need to cleanup" +fi +# Continue with the original commit +exit 0 diff --git "a/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md" "b/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md" index f4c35a5..bdbed75 100644 --- "a/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md" +++ "b/locales/ko/\355\205\234\355\224\214\353\246\277/\352\262\260\354\240\225 \352\270\260\353\241\235 \355\205\234\355\224\214\353\246\277\353\263\204 edgex/index.md" @@ -5,7 +5,7 @@ EdgeX Foundry의 ADR 템플릿입니다. 출처: https://docs.edgexfoundry.org/2.3/design/adr/template/ -### 제출자 +### 제출자 ADR 제출자를 나열합니다. ``` Signed-off-by: flavono123 <flavono123@gmail.com>
a suggestion for #69 (comment) by just creating this PR |
Good idea. A few questions.... Can this kind of proofreading and changing have more capabilities? Can the code be minimized in shell, by calling on installed software, such as installed on a CI server and/or GitHub actions and/or the developer's system? Do you foresee what you're aiming for generally heading along the direction of a formatter and/or linter? A few questions about the shell code... Should this be ACMR?
I believe that
Ideally can a successful run be silent, akin to the Unix convention of silent success?
Can it run with guard flags, such as
Can you trap the Could it be worthwhile to look for a longer-term larger-scope solution to make your idea even more powerful and valuable? Here are some that turned up when I looked... do any of these look like they can give you more capabilities? Overall, my opinion is your code is fine to commit and use. I favor bias for action, and you're doing action. I appreciate you! |
thank you for valuable and various points. in a nutshell, in advance, i prefer/think the choice is github action + megalinter:
the matter is pricing, no for megalinter but github action. |
Excellent research! Yes GitHub Action + MegaLinter sounds good. And I expect that the pricing on the free tier is OK. If you want to try it, go ahead on this whole repo. |
- discussed and researched in joelparkerhenderson#73 (comment) - set config to lint only markdownlint - excluding markdown-link-check and markdown-table-formatter - ignore reports dir - run freely in each local - or cached in CI is enough
Goal
Descriptions
Requirements
git config core.hooksPath .githooks
to activate the hookgit config core.quotepath false
for non-ascii pathsTest
Signed-off-by: flavono123 flavono123@gmail.com