Repos fail to commit with error "author field is required" when using git config includes for [user] section
git-xargs version git-xargs version v0.0.11
Describe the bug
Logs here. When running git-xargs, I get the error "author field is required" during the commit step. This seems to be true of any repo I try with git-xargs.
It looks related to my git config includes. I use a different email addresses for git at work and use includes to specify my user.name and user.email on different machines. My ~/.gitconfig contains:
# ~/.gitconfig
[include]
path = ~/.gitconfig.local
# no [user] section exists
and
# ~/.gitconfig.local
[user]
name = ...
email = ...
I've never had any issue with this before, but notice this in the git-config man pages. It implies that git-config might not honor includes in some cases and that you might have to include an explicit option.
--[no-]includes
Respect include.* directives in config files when looking up values.
Defaults to off when a specific file is given (e.g., using --file,
--global, etc) and on when searching all config files.
Just to make sure the includes are read properly by git:
$ git config --get user.name
Aaron D Borden
$ git config --global --get user.name
# exit 1
$ git config --global --includes --get user.name
Aaron D Borden
To Reproduce Steps to reproduce the behavior:
- Move your
user.nameanduser.emailfrom your ~/.gitconfig, to ~/.gitconfig.local - Add an
[includes]section as above in ~/.gitconfig to include ~/.gitconfig.local - I'm using a script to generate templates for git-xargs, it looks similar to this:
git-xargs \
--branch-name tts-bot/update-templates \
--loglevel "${LOGLEVEL}" \
--repos "${template_dir}/repo_list" \
--skip-archived-repos \
--pull-request-title "${pull_request_title}" \
--pull-request-description "$(template pull_request_description)" \
--commit-message "$(template commit_message)" \
$(pwd)/bin/ci_update_templates.sh "${canonical_repository}" "${template_dir}/template_files"
repos file contains the single repo 18F/ghad.
Expected behavior git-xargs respects the git config include and attributes the author correctly AND git-xargs warns when it cannot identify the author for the commit.
Screenshots Logs https://gist.github.com/adborden/f0000d75107e1971940d48b58bc710be
Additional context
To work-around, I confirmed that you can set the user.name and user.email in the main config and git-xargs works as expected.
Thanks for the detailed bug report! Just wanted to acknowledge receipt. I'll take a look as soon as I can.
I'm seeing the exact problem and the workaround works great. It'd be great to get this problem fixed though because people have this setup when they have multiple github accounts (work vs personal).
Small note on the workaround for others finding this issue. You can easily add the user.name and user.email sections to the global config with the following commands:
git config --global user.name "John Doe"
git config --global user.email "[email protected]"
This is still broken. There's legitimate use cases to separate your gitconfig and the authors therein.
Yes, I just hit that too