adamsaghy commented on code in PR #5437:
URL: https://github.com/apache/fineract/pull/5437#discussion_r2821991196
##########
.github/workflows/pr-one-commit-per-user-check.yml:
##########
@@ -0,0 +1,57 @@
+name: Fineract PR One Commit Per User Check
+
+
+on:
+ pull_request:
+ types: [opened, reopened, synchronize]
+
+
+permissions:
+ pull-requests: write
+
+
+jobs:
+ verify-commits:
+ name: Validate One Commit Per User
+ runs-on: ubuntu-latest
+ timeout-minutes: 1
+ steps:
+ - name: Verify Commit Policy
+ id: check
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: |
+
+ commits=$(gh api "repos/$REPO/pulls/$PR_NUMBER/commits") || { echo
"::error::GitHub API request failed"; exit 1; }
+
+ if echo "$commits" | jq -e '.[] | select(.author == null)' >
/dev/null; then
+ echo "null_authors=true" >> $GITHUB_OUTPUT
+ echo "::error::Some commits have a git email that is not linked to
a GitHub account. Please ensure your git email matches one of your GitHub
Account emails."
+ exit 1
+ fi
+
+ user_ids=$(echo "$commits" | jq -r '.[] | select(.author.type !=
"Bot") | .author.id')
+ if echo "$user_ids" | sort | uniq -d | grep -q .; then
+ echo "multiple_commits=true" >> $GITHUB_OUTPUT
+ echo "::error::Multiple commits from the same author have been
detected."
+ exit 1
+ fi
+
+ echo "Success: Each author has exactly one commit."
+
+ - name: Comment on PR
+ if: failure()
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Review Comment:
I dont think we need cron job. It will be executed alongside all other
checks. When something got changed, it will be re-run. I see no issue here.
I think we are fine to have multiple commits if it came from different
authors. The check should catch and handle the situation where:
```
Commit by Author A -> So far good
Commit by Author A -> Nope, it's a duplication!
```
or
```
Commit by Author A -> So far good
Commit by Author B -> So far good
Commit by Author A -> Nope, it's a duplication!
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]