git-xargs icon indicating copy to clipboard operation
git-xargs copied to clipboard

Repos fail to commit with error "author field is required" when using git config includes for [user] section

Open adborden opened this issue 4 years ago • 4 comments

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:

  1. Move your user.name and user.email from your ~/.gitconfig, to ~/.gitconfig.local
  2. Add an [includes] section as above in ~/.gitconfig to include ~/.gitconfig.local
  3. 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.

adborden avatar Aug 13 '21 21:08 adborden

Thanks for the detailed bug report! Just wanted to acknowledge receipt. I'll take a look as soon as I can.

zackproser avatar Aug 19 '21 18:08 zackproser

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).

jduan-highnote avatar Jan 16 '23 16:01 jduan-highnote

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]"

bbkane avatar Oct 23 '23 02:10 bbkane

This is still broken. There's legitimate use cases to separate your gitconfig and the authors therein.

bkk-bcd avatar Mar 11 '24 13:03 bkk-bcd

Yes, I just hit that too

orfeas-k avatar Apr 17 '24 12:04 orfeas-k