stefanzweifel / git-auto-commit-action

Automatically commit and push changed files back to GitHub with this GitHub Action for the 80% use case.
MIT License
1.98k stars 227 forks source link

Respect author/committer if configured in git #132

Closed jasonkarns closed 2 months ago

jasonkarns commented 3 years ago

Is your feature request related to a problem? Please describe.

I'm attempting to use this action with this action: https://github.com/crazy-max/ghaction-import-gpg. The gpg action imports gpg keys and configures git such that commits, tags, and pushes may be signed. Because gpg signing must use the proper email address associated with the gpg key, it's important to ensure the git author/committer email address is correct. To this end, the gpg action sets the git user information explicitly. In other words, after the gpg action has run, git commit uses the properly configured author name and email.

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

I'm replacing my manual git operations with this auto-commit action. However, the auto-commit action (by default), is not respecting the author and committer information as configured in git.

Describe the solution you'd like

It's quite possible to explicitly override the default author information using this actions' parameters. However, I think that if author information is already configured in git, that it should take precedence over this action's defaults. Desired order of precedence for deriving authorship info:

  1. action params
  2. git user.name/user.email
  3. action defaults (actor + "GitHub Actions")

Describe alternatives you've considered

It works to explicitly set the authorship info for the action. However, this is especially redundant as it needs to match the gpg configuration precisely. Any typo or misconfiguration of the email address and the gpg signing will fail to apply (since the key won't be found for that email address). Hence, it would be preferable (and "safer") to use the authorship information as configured in git itself if set.

stefanzweifel commented 3 years ago

I guess this could be achieved by wrapping the current git commit and git tag code with an if-condition. We would check if git config user.email and git config user.name are already configured. Only if those values are empty we will apply the input values given to the Action.

But the desired order of precedence you describe is basically not possible to implement. The default values get supplied through the Action Input params. The Action doesn't know if you explicitly set them in your Workflow or if they are the default values set in action.yml. We could maybe hardcode the values in the shell script itself, but I think that would make things just more complicated down the line for me as the maintainer.

I can see the frustration you might have of repeating the user configuration for git-auto-commit. Will have to think about this a bit longer.


Would it be possible to share the portions of your workflow where you setup import-gpg and git-auto-commit? Just so that I see, how those 2 Actions work together? We could also add an example configuration to the README. We already have a section which mentions the import-gpg Action. (https://github.com/stefanzweifel/git-auto-commit-action#signing-commits--other-git-command-line-options)

stefanzweifel commented 2 months ago

I'm closing this issue as I currently don't see a good way to differentiate between default values provided by action.yml, user provided values in a GitHub Actions workflow and already configured git user values during a workflow run.

We could switch the default behaviour of the app to always use the name and email of the person that triggered the workflow, but that would lead to other issues when a workflow is not triggered on push/pull_request.


There's now a proper example on how to use this Action with crazy-max/ghaction-import-gpg in the README.