Skip to content

Commit

Permalink
Merge branch 'bc/author-committer-doc'
Browse files Browse the repository at this point in the history
Clarify documentation on committer/author identities.

* bc/author-committer-doc:
  doc: provide guidance on user.name format
  docs: expand on possible and recommended user config options
  doc: move author and committer information to git-commit(1)
  • Loading branch information
gitster committed Jan 30, 2020
2 parents 0d0fa20 + 69e104d commit c9ccf9d
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 27 deletions.
7 changes: 6 additions & 1 deletion Documentation/config/user.txt
Expand Up @@ -13,7 +13,12 @@ committer.email::
Also, all of these can be overridden by the `GIT_AUTHOR_NAME`,
`GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`,
`GIT_COMMITTER_EMAIL` and `EMAIL` environment variables.
See linkgit:git-commit-tree[1] for more information.
+
Note that the `name` forms of these variables conventionally refer to
some form of a personal name. See linkgit:git-commit[1] and the
environment variables section of linkgit:git[1] for more information on
these settings and the `credential.username` option if you're looking
for authentication credentials instead.

user.useConfigOnly::
Instruct Git to avoid trying to guess defaults for `user.email`
Expand Down
22 changes: 1 addition & 21 deletions Documentation/git-commit-tree.txt
Expand Up @@ -69,7 +69,6 @@ OPTIONS
Do not GPG-sign commit, to countermand a `--gpg-sign` option
given earlier on the command line.


Commit Information
------------------

Expand All @@ -79,26 +78,6 @@ A commit encapsulates:
- author name, email and date
- committer name and email and the commit time.

While parent object ids are provided on the command line, author and
committer information is taken from the following environment variables,
if set:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE

(nb "<", ">" and "\n"s are stripped)

In case (some of) these environment variables are not set, the information
is taken from the configuration items user.name and user.email, or, if not
present, the environment variable EMAIL, or, if that is not set,
system user name and the hostname used for outgoing mail (taken
from `/etc/mailname` and falling back to the fully qualified hostname when
that file does not exist).

A commit comment is read from stdin. If a changelog
entry is not provided via "<" redirection, 'git commit-tree' will just wait
for one to be entered and terminated with ^D.
Expand All @@ -117,6 +96,7 @@ FILES
SEE ALSO
--------
linkgit:git-write-tree[1]
linkgit:git-commit[1]

GIT
---
Expand Down
40 changes: 37 additions & 3 deletions Documentation/git-commit.txt
Expand Up @@ -367,9 +367,6 @@ changes to tracked files.
+
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].

:git-commit: 1
include::date-formats.txt[]

EXAMPLES
--------
When recording your own work, the contents of modified files in
Expand Down Expand Up @@ -463,6 +460,43 @@ alter the order the changes are committed, because the merge
should be recorded as a single commit. In fact, the command
refuses to run when given pathnames (but see `-i` option).

COMMIT INFORMATION
------------------

Author and committer information is taken from the following environment
variables, if set:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_AUTHOR_DATE
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE

(nb "<", ">" and "\n"s are stripped)

The author and committer names are by convention some form of a personal name
(that is, the name by which other humans refer to you), although Git does not
enforce or require any particular form. Arbitrary Unicode may be used, subject
to the constraints listed above. This name has no effect on authentication; for
that, see the `credential.username` variable in linkgit:git-config[1].

In case (some of) these environment variables are not set, the information
is taken from the configuration items `user.name` and `user.email`, or, if not
present, the environment variable EMAIL, or, if that is not set,
system user name and the hostname used for outgoing mail (taken
from `/etc/mailname` and falling back to the fully qualified hostname when
that file does not exist).

The `author.name` and `committer.name` and their corresponding email options
override `user.name` and `user.email` if set and are overridden themselves by
the environment variables.

The typical usage is to set just the `user.name` and `user.email` variables;
the other options are provided for more complex use cases.

:git-commit: 1
include::date-formats.txt[]

DISCUSSION
----------
Expand Down
27 changes: 25 additions & 2 deletions Documentation/git.txt
Expand Up @@ -482,13 +482,36 @@ double-quotes and respecting backslash escapes. E.g., the value
Git Commits
~~~~~~~~~~~
`GIT_AUTHOR_NAME`::
The human-readable name used in the author identity when creating commit or
tag objects, or when writing reflogs. Overrides the `user.name` and
`author.name` configuration settings.

`GIT_AUTHOR_EMAIL`::
The email address used in the author identity when creating commit or
tag objects, or when writing reflogs. Overrides the `user.email` and
`author.email` configuration settings.

`GIT_AUTHOR_DATE`::
The date used for the author identity when creating commit or tag objects, or
when writing reflogs. See linkgit:git-commit[1] for valid formats.

`GIT_COMMITTER_NAME`::
The human-readable name used in the committer identity when creating commit or
tag objects, or when writing reflogs. Overrides the `user.name` and
`committer.name` configuration settings.

`GIT_COMMITTER_EMAIL`::
The email address used in the author identity when creating commit or
tag objects, or when writing reflogs. Overrides the `user.email` and
`committer.email` configuration settings.

`GIT_COMMITTER_DATE`::
'EMAIL'::
see linkgit:git-commit-tree[1]
The date used for the committer identity when creating commit or tag objects, or
when writing reflogs. See linkgit:git-commit[1] for valid formats.

`EMAIL`::
The email address used in the author and committer identities if no other
relevant environment variable or configuration setting has been set.

Git Diffs
~~~~~~~~~
Expand Down

0 comments on commit c9ccf9d

Please sign in to comment.