Web lists-archives.com

Re: "commit --author=..." does not work if global email and name is not set

On Mon, Apr 8, 2019 at 1:06 PM Jakub Narebski <jnareb@xxxxxxxxx> wrote:
> Piotr Krukowiecki <piotr.krukowiecki@xxxxxxxxx> writes:
> >> On Sat, Apr 6, 2019 at 8:25 PM Jakub Narebski <jnareb@xxxxxxxxx> wrote:
> >>>
> >>> Better though is to focus on what you want, namely to prevent accidental
> >>> commits without specified author, instead of how you want to achieve it,
> >>> i.e. using --author to provide both author and committer identity (the
> >>> XY problem).  On that machine with "automatic test account" set up
> >>> pre-commit or commit-msg hook that fails if the GIT_AUTHOR_IDENT
> >>> environment variable is not the "automatic test account".
> >
> > I'm not sure if I follow you. I want to be able to make both "real
> > user" and "automatic test account user" commits from that machine. I
> > want to make sure that:
> > - automatic commits (scripts) use their own account
> > - real person making commit uses their own account
> >
> > IMO the only way this can be achieved is by not having any default
> > account setup, so that both the scripts and the real users need to
> > specify it "by hand".
> If a real person making commits uses their own account (just on that
> machine), he or she can set up `user.name` and `user.email` settings in
> the per-user Git configuration file

There is one common "test" (Windows) account which is used both by
automatic test scripts and by real people who log into that machine,
so this is not possible.

> If however one is doing commits from the "automatic test user" account,
> then the `pre-commit` or `commit-msg` hook configured for that specific
> repository for that automatic account would be run, which can detect
> that the commit was not done with
>   $ git commit --author="My Name <me@xxxxxxxxxxxx>"
> The additional advantage is that you can examine committer data to
> detect such cases of committing out of automatic account.

Do you mean following?

1. set default user (user.name, user.email) to "automatic test user"
on that machine
2. set commit hook to prevent commits with "automatic test user" AUTHOR
3. scripts will set AUTHOR (--author) to for example "script X" or
"automatic script user" - different than the default user
4. real users will set AUTHOR to their own identity (--author=me)

I suppose that would work. Looks much more complicated than simply
setting "--author" (or "--user") though...

Piotr Krukowiecki