Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
adborden opened this issue Aug 13, 2021 · 5 comments

Comments

@adborden
Copy link

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.

@zackproser
Copy link
Contributor

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

@jduan-highnote
Copy link

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

@bbkane
Copy link

bbkane commented Oct 23, 2023

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

@zackproser zackproser removed their assignment Nov 3, 2023
@bkk-bcd
Copy link

bkk-bcd commented Mar 11, 2024

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

@orfeas-k
Copy link

Yes, I just hit that too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants