make commit message a little more consistent and conforting
It is nicer to let the user know when a commit succeeded all the time, not only the first time. Also the commit sha1 is much more useful than the tree sha1 in this case. This patch also introduces a -q switch to supress this message as well as the summary of created/deleted files. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
1510fea781
commit
ebd124c678
@ -336,17 +336,9 @@ $ commit=$(echo 'Initial commit' | git-commit-tree $tree)
|
||||
$ git-update-ref HEAD $commit
|
||||
------------------------------------------------
|
||||
|
||||
which will say:
|
||||
|
||||
----------------
|
||||
Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb
|
||||
----------------
|
||||
|
||||
just to warn you about the fact that it created a totally new commit
|
||||
that is not related to anything else. Normally you do this only *once*
|
||||
for a project ever, and all later commits will be parented on top of an
|
||||
earlier commit, and you'll never see this "Committing initial tree"
|
||||
message ever again.
|
||||
In this case this creates a totally new commit that is not related to
|
||||
anything else. Normally you do this only *once* for a project ever, and
|
||||
all later commits will be parented on top of an earlier commit.
|
||||
|
||||
Again, normally you'd never actually do this by hand. There is a
|
||||
helpful script called `git commit` that will do all of this for you. So
|
||||
|
@ -21,6 +21,11 @@
|
||||
deleted lines in decimal notation and pathname without
|
||||
abbreviation, to make it more machine friendly.
|
||||
|
||||
--shortstat::
|
||||
Output only the last line of the --stat format containing total
|
||||
number of modified files, as well as number of added and deleted
|
||||
lines.
|
||||
|
||||
--summary::
|
||||
Output a condensed summary of extended header information
|
||||
such as creations, renames and mode changes.
|
||||
|
@ -113,6 +113,9 @@ but can be used to amend a merge commit.
|
||||
as well. This is usually not what you want unless you
|
||||
are concluding a conflicted merge.
|
||||
|
||||
-q|--quiet::
|
||||
Supress commit summary message.
|
||||
|
||||
\--::
|
||||
Do not interpret any more arguments as options.
|
||||
|
||||
|
@ -22,14 +22,14 @@ defaulting to local storage area
|
||||
$ echo 'hello world' > file.txt
|
||||
$ git add .
|
||||
$ git commit -a -m "initial commit"
|
||||
Committing initial tree 92b8b694ffb1675e5975148e1121810081dbdffe
|
||||
Created initial commit 54196cc2703dc165cbd373a65a4dcf22d50ae7f7
|
||||
create mode 100644 file.txt
|
||||
$ echo 'hello world!' >file.txt
|
||||
$ git commit -a -m "add emphasis"
|
||||
Created commit c4d59f390b9cfd4318117afde11d601c1085f241
|
||||
------------------------------------------------
|
||||
|
||||
What are the 40 digits of hex that git responded to the first commit
|
||||
with?
|
||||
What are the 40 digits of hex that git responded to the commit with?
|
||||
|
||||
We saw in part one of the tutorial that commits have names like this.
|
||||
It turns out that every object in the git history is stored under
|
||||
@ -39,13 +39,25 @@ the same data twice (since identical data is given an identical SHA1
|
||||
name), and that the contents of a git object will never change (since
|
||||
that would change the object's name as well).
|
||||
|
||||
It is expected that the content of the commit object you created while
|
||||
following the example above generates a different SHA1 hash than
|
||||
the one shown above because the commit object records the time when
|
||||
it was created and the name of the person performing the commit.
|
||||
|
||||
We can ask git about this particular object with the cat-file
|
||||
command--just cut-and-paste from the reply to the initial commit, to
|
||||
save yourself typing all 40 hex digits:
|
||||
command. Don't copy the 40 hex digits from this example but use those
|
||||
from your own version. Note that you can shorten it to only a few
|
||||
characters to save yourself typing all 40 hex digits:
|
||||
|
||||
------------------------------------------------
|
||||
$ git cat-file -t 92b8b694ffb1675e5975148e1121810081dbdffe
|
||||
tree
|
||||
$ git-cat-file -t 54196cc2
|
||||
commit
|
||||
$ git-cat-file commit 54196cc2
|
||||
tree 92b8b694ffb1675e5975148e1121810081dbdffe
|
||||
author J. Bruce Fields <bfields@puzzle.fieldses.org> 1143414668 -0500
|
||||
committer J. Bruce Fields <bfields@puzzle.fieldses.org> 1143414668 -0500
|
||||
|
||||
initial commit
|
||||
------------------------------------------------
|
||||
|
||||
A tree can refer to one or more "blob" objects, each corresponding to
|
||||
@ -102,8 +114,7 @@ $ find .git/objects/
|
||||
|
||||
and the contents of these files is just the compressed data plus a
|
||||
header identifying their length and their type. The type is either a
|
||||
blob, a tree, a commit, or a tag. We've seen a blob and a tree now,
|
||||
so next we should look at a commit.
|
||||
blob, a tree, a commit, or a tag.
|
||||
|
||||
The simplest commit to find is the HEAD commit, which we can find
|
||||
from .git/HEAD:
|
||||
|
@ -107,8 +107,6 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix)
|
||||
if (new_parent(parents))
|
||||
parents++;
|
||||
}
|
||||
if (!parents)
|
||||
fprintf(stderr, "Committing initial tree %s\n", argv[1]);
|
||||
|
||||
init_buffer(&buffer, &size);
|
||||
add_buffer(&buffer, &size, "tree %s\n", sha1_to_hex(tree_sha1));
|
||||
|
38
diff.c
38
diff.c
@ -801,6 +801,35 @@ static void show_stats(struct diffstat_t* data, struct diff_options *options)
|
||||
set, total_files, adds, dels, reset);
|
||||
}
|
||||
|
||||
static void show_shortstats(struct diffstat_t* data)
|
||||
{
|
||||
int i, adds = 0, dels = 0, total_files = data->nr;
|
||||
|
||||
if (data->nr == 0)
|
||||
return;
|
||||
|
||||
for (i = 0; i < data->nr; i++) {
|
||||
if (!data->files[i]->is_binary &&
|
||||
!data->files[i]->is_unmerged) {
|
||||
int added = data->files[i]->added;
|
||||
int deleted= data->files[i]->deleted;
|
||||
if (!data->files[i]->is_renamed &&
|
||||
(added + deleted == 0)) {
|
||||
total_files--;
|
||||
} else {
|
||||
adds += added;
|
||||
dels += deleted;
|
||||
}
|
||||
}
|
||||
free(data->files[i]->name);
|
||||
free(data->files[i]);
|
||||
}
|
||||
free(data->files);
|
||||
|
||||
printf(" %d files changed, %d insertions(+), %d deletions(-)\n",
|
||||
total_files, adds, dels);
|
||||
}
|
||||
|
||||
static void show_numstat(struct diffstat_t* data, struct diff_options *options)
|
||||
{
|
||||
int i;
|
||||
@ -1771,6 +1800,7 @@ int diff_setup_done(struct diff_options *options)
|
||||
options->output_format &= ~(DIFF_FORMAT_RAW |
|
||||
DIFF_FORMAT_NUMSTAT |
|
||||
DIFF_FORMAT_DIFFSTAT |
|
||||
DIFF_FORMAT_SHORTSTAT |
|
||||
DIFF_FORMAT_SUMMARY |
|
||||
DIFF_FORMAT_PATCH);
|
||||
|
||||
@ -1781,6 +1811,7 @@ int diff_setup_done(struct diff_options *options)
|
||||
if (options->output_format & (DIFF_FORMAT_PATCH |
|
||||
DIFF_FORMAT_NUMSTAT |
|
||||
DIFF_FORMAT_DIFFSTAT |
|
||||
DIFF_FORMAT_SHORTSTAT |
|
||||
DIFF_FORMAT_SUMMARY |
|
||||
DIFF_FORMAT_CHECKDIFF))
|
||||
options->recursive = 1;
|
||||
@ -1872,6 +1903,9 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
|
||||
else if (!strcmp(arg, "--numstat")) {
|
||||
options->output_format |= DIFF_FORMAT_NUMSTAT;
|
||||
}
|
||||
else if (!strcmp(arg, "--shortstat")) {
|
||||
options->output_format |= DIFF_FORMAT_SHORTSTAT;
|
||||
}
|
||||
else if (!strncmp(arg, "--stat", 6)) {
|
||||
char *end;
|
||||
int width = options->stat_width;
|
||||
@ -2646,7 +2680,7 @@ void diff_flush(struct diff_options *options)
|
||||
separator++;
|
||||
}
|
||||
|
||||
if (output_format & (DIFF_FORMAT_DIFFSTAT|DIFF_FORMAT_NUMSTAT)) {
|
||||
if (output_format & (DIFF_FORMAT_DIFFSTAT|DIFF_FORMAT_SHORTSTAT|DIFF_FORMAT_NUMSTAT)) {
|
||||
struct diffstat_t diffstat;
|
||||
|
||||
memset(&diffstat, 0, sizeof(struct diffstat_t));
|
||||
@ -2660,6 +2694,8 @@ void diff_flush(struct diff_options *options)
|
||||
show_numstat(&diffstat, options);
|
||||
if (output_format & DIFF_FORMAT_DIFFSTAT)
|
||||
show_stats(&diffstat, options);
|
||||
else if (output_format & DIFF_FORMAT_SHORTSTAT)
|
||||
show_shortstats(&diffstat);
|
||||
separator++;
|
||||
}
|
||||
|
||||
|
1
diff.h
1
diff.h
@ -29,6 +29,7 @@ typedef void (*diff_format_fn_t)(struct diff_queue_struct *q,
|
||||
#define DIFF_FORMAT_NUMSTAT 0x0004
|
||||
#define DIFF_FORMAT_SUMMARY 0x0008
|
||||
#define DIFF_FORMAT_PATCH 0x0010
|
||||
#define DIFF_FORMAT_SHORTSTAT 0x0020
|
||||
|
||||
/* These override all above */
|
||||
#define DIFF_FORMAT_NAME 0x0100
|
||||
|
@ -80,6 +80,7 @@ no_edit=
|
||||
log_given=
|
||||
log_message=
|
||||
verify=t
|
||||
quiet=
|
||||
verbose=
|
||||
signoff=
|
||||
force_author=
|
||||
@ -241,6 +242,10 @@ $1"
|
||||
signoff=t
|
||||
shift
|
||||
;;
|
||||
-q|--q|--qu|--qui|--quie|--quiet)
|
||||
quiet=t
|
||||
shift
|
||||
;;
|
||||
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
|
||||
verbose=t
|
||||
shift
|
||||
@ -615,11 +620,17 @@ then
|
||||
git-rerere
|
||||
fi
|
||||
|
||||
if test -x "$GIT_DIR"/hooks/post-commit && test "$ret" = 0
|
||||
if test "$ret" = 0
|
||||
then
|
||||
if test -x "$GIT_DIR"/hooks/post-commit
|
||||
then
|
||||
"$GIT_DIR"/hooks/post-commit
|
||||
fi
|
||||
|
||||
test "$ret" = 0 && git-diff-tree --summary --root --no-commit-id HEAD
|
||||
if test -z "$quiet"
|
||||
then
|
||||
echo "Created${initial_commit:+ initial} commit $commit"
|
||||
git-diff-tree --shortstat --summary --root --no-commit-id HEAD
|
||||
fi
|
||||
fi
|
||||
|
||||
exit "$ret"
|
||||
|
@ -37,8 +37,6 @@ test_expect_success 'tree' "test 8988da15d077d4829fc51d8544c097def6644dbb = $tre
|
||||
|
||||
output="$(echo "Initial commit" | git-commit-tree $(git-write-tree) 2>&1 > .git/refs/heads/master)"
|
||||
|
||||
test_expect_success 'commit' "test 'Committing initial tree 8988da15d077d4829fc51d8544c097def6644dbb' = \"$output\""
|
||||
|
||||
git-diff-index -p HEAD > diff.output
|
||||
test_expect_success 'git-diff-index -p HEAD' 'cmp diff.expect diff.output'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user