2f70587502
When getpwuid fails, we give a cute but cryptic message. While it makes sense if you know that getpwuid or identity functions are being called, this code is triggered behind the scenes by quite a few git commands these days (e.g., receive-pack on a remote server might use it for a reflog; the current message is hard to distinguish from an authentication error). Let's switch to something that gives a little more context. While we're at it, we can factor out all of the cut-and-pastes of the "you don't exist" message into a wrapper function. Rather than provide xgetpwuid, let's make it even more specific to just getting the passwd entry for the current uid. That's the only way we use getpwuid anyway, and it lets us make an even more specific error message. The current message also fails to mention errno. While the usual cause for getpwuid failing is that the user does not exist, mentioning errno makes it easier to diagnose these problems. Note that POSIX specifies that errno remain untouched if the passwd entry does not exist (but will be set on actual errors), whereas some systems will return ENOENT or similar for a missing entry. We handle both cases in our wrapper. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
107 lines
2.7 KiB
Plaintext
107 lines
2.7 KiB
Plaintext
git-commit-tree(1)
|
|
==================
|
|
|
|
NAME
|
|
----
|
|
git-commit-tree - Create a new commit object
|
|
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'git commit-tree' <tree> [(-p <parent>)...] < changelog
|
|
'git commit-tree' [(-p <parent>)...] [(-m <message>)...] [(-F <file>)...] <tree>
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
This is usually not what an end user wants to run directly. See
|
|
linkgit:git-commit[1] instead.
|
|
|
|
Creates a new commit object based on the provided tree object and
|
|
emits the new commit object id on stdout. The log message is read
|
|
from the standard input, unless `-m` or `-F` options are given.
|
|
|
|
A commit object may have any number of parents. With exactly one
|
|
parent, it is an ordinary commit. Having more than one parent makes
|
|
the commit a merge between several lines of history. Initial (root)
|
|
commits have no parents.
|
|
|
|
While a tree represents a particular directory state of a working
|
|
directory, a commit represents that state in "time", and explains how
|
|
to get there.
|
|
|
|
Normally a commit would identify a new "HEAD" state, and while git
|
|
doesn't care where you save the note about that state, in practice we
|
|
tend to just write the result to the file that is pointed at by
|
|
`.git/HEAD`, so that we can always see what the last committed
|
|
state was.
|
|
|
|
OPTIONS
|
|
-------
|
|
<tree>::
|
|
An existing tree object
|
|
|
|
-p <parent>::
|
|
Each '-p' indicates the id of a parent commit object.
|
|
|
|
-m <message>::
|
|
A paragraph in the commig log message. This can be given more than
|
|
once and each <message> becomes its own paragraph.
|
|
|
|
-F <file>::
|
|
Read the commit log message from the given file. Use `-` to read
|
|
from the standard input.
|
|
|
|
|
|
Commit Information
|
|
------------------
|
|
|
|
A commit encapsulates:
|
|
|
|
- all parent object ids
|
|
- 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
|
|
EMAIL
|
|
|
|
(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, 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.
|
|
|
|
include::date-formats.txt[]
|
|
|
|
Discussion
|
|
----------
|
|
|
|
include::i18n.txt[]
|
|
|
|
FILES
|
|
-----
|
|
/etc/mailname
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkgit:git-write-tree[1]
|
|
|
|
GIT
|
|
---
|
|
Part of the linkgit:git[1] suite
|