ktlint-gradle icon indicating copy to clipboard operation
ktlint-gradle copied to clipboard

Gradlew and .git is not in the same root folder- `addKtlintCheckGitPreCommitHook` always successfully even i broke the rule [pre-commit]

Open ksyamkrishnan opened this issue 3 years ago • 7 comments

Under the same ref: https://github.com/JLLeitschuh/ktlint-gradle/issues/351 Hi @Tapchicoma , As per our discussions I created a new sample project and was able to reproduce the same issues. The details are provided in the readme file.

Please find the sample project here. I think the issue is with the changed file path. Can you please provide more insights on this. Also if multiple files are there in the changed files from different modules, this script will handle it.

#!/bin/sh set -e ######## KTLINT-GRADLE HOOK START ########

CHANGED_FILES="$(git --no-pager diff --name-status --no-color --cached -- public/trunk/ | awk '$1 != "D" && $2 ~ /.kts|.kt/ { print $2}')"

if [ -z "$CHANGED_FILES" ]; then echo "No Kotlin staged files." exit 0 fi;

echo "Running ktlint over these files:" echo "$CHANGED_FILES"

./public/trunk/gradlew -p ./public/trunk --quiet ktlintCheck -PinternalKtlintGitFilter="$CHANGED_FILES"

echo "Completed ktlint run."

echo "Completed ktlint hook." ######## KTLINT-GRADLE HOOK END ########

Thanks in Advance, Syam

@Tapchicoma the changed file path coming is public/trunk/app/src/main/java/com/example/myapplication/MainActivity.kt which is not working but if I change this to app/src/main/java/com/example/myapplication/MainActivity.kt it is working. Can you please suggest what changes we need to make to work it across?

ksyamkrishnan avatar Aug 06 '20 07:08 ksyamkrishnan

@Tapchicoma the changed file path coming is public/trunk/app/src/main/java/com/example/myapplication/MainActivity.kt which is not working but if I change this to app/src/main/java/com/example/myapplication/MainActivity.kt it is working. Can you please suggest what changes we need to make to work it across?

Thanks in advance

ksyamkrishnan avatar Aug 13 '20 05:08 ksyamkrishnan

I just ran into the same problem and the issue has to do with the filepath of the changed files that are fed to PinternalKtlintGitFilter. The files include the full dir path, but it looks like the git filter does not understand the full path. When I removed the ./public/trunk/ prefix from those files, I was able to get PinternalKtlintGitFilter to work.

gregblaszczuk avatar Jun 04 '21 01:06 gregblaszczuk

Can you provide the solution here

ravjain-adb avatar Jul 31 '21 22:07 ravjain-adb

I've just ran into the same problem too. Basically, the git hook doesn't work if your build.gradle is not at the root of your git repository (e.g. if you are hosting a backend and a frontend in the same git repository, which is quite common).

Simon3 avatar May 23 '23 10:05 Simon3

Was anyone able to figure out the solution for this, also how to make this work for multimodule app?

akhil-handa avatar Jan 15 '24 07:01 akhil-handa