GitHub integration excessive commits

The GitHub integration creates a new commit for every single changed file.

This can cause a lot of issues if repo maintainers are not careful.

  1. It will trigger a workflow run for every commit on the PR. You need to enable workflow concurrency, but this could still lead to extra usage because the first workflows need to be cancelled after they are already started.
  2. The merge gets really messy, unless the PR is squashed and merged (many people don’t even know what this is).
  3. External services, such as SonarCloud, get confused and possibly rate limited

Suggestion:

  • Put all changes into one file
  • When there are new changes, and a PR is already open, rebase the PR branch and amend the commit instead of creating new ones
2 Likes

Hi @ReenigneArcher , first of all, you are welcome to use Squash and merge option in the repository:

Then in Crowdin project > integration settings, you’re welcome to set the Sync schedule, so synchronization will happen after a set period of time:

Hello Natalia,

Thank you, but I have to +1 the original post and your answer doesn’t address the issue. Anyone watching the repo (except the person who set up the integration) will get an email for every single commit, which means up to 1000 times per day in a project with 100 files and 10 languages. Please consider grouping changes to multiple files in a single commit. Even if it was just grouped by language, it would reduce the spam a lot.

Benoît

Hi @benface we have doeble-checked with the engineers and I’m afraid this can’t be implemented due to technical complexity

What is the technical complexity?

This should be extremely simple. Just commit everything, then “push” after.

Hi @ReenigneArcher ,

The complexity can increase depending on the size of the files, the structure of the project, etc. Sorry to bring this up, but this part of the system’s logic will remain unchanged.

To keep the process as simple as possible, ensure that your team is aligned on when and how to commit and push changes.

If you’re experiencing any specific issues or have further questions about optimizing your workflow, please let us know, and we’ll be happy to assist.

That’s the whole point of this post. There’s no control over this as it’s done by the CrowdIn git integration.

You’re suggesting that in order to solve this we would need to write our own git integration instead of using the one provided by CrowdIn?

I also noticed a typo in my original post (which I cannot edit)

Put all changes into one file should have been Put all changes into one commit

Dear @ReenigneArcher,

Since VCS integrations in Crowdin use API to commit files but not Git, each file is committed separately.

Here are a few recommendations that might help:

  • Use the export_languages option to skip commits from languages you’re not interested in yet. Read more about the Export languages parameter.
  • Use the [ci skip] tag in the commit messages to skip unnecessary builds. Read more about the Commit Message parameter.
  • Configure the preferred sync interval using Sync Schedule (e.g., set the sync once in 24 hours).
  • Squash commits when merging a localization branch to keep the master branch history clean and uncluttered.
1 Like