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>maint
							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 | ||||
| 	"$GIT_DIR"/hooks/post-commit | ||||
| 	if test -x "$GIT_DIR"/hooks/post-commit | ||||
| 	then | ||||
| 		"$GIT_DIR"/hooks/post-commit | ||||
| 	fi | ||||
| 	if test -z "$quiet" | ||||
| 	then | ||||
| 		echo "Created${initial_commit:+ initial} commit $commit" | ||||
| 		git-diff-tree --shortstat --summary --root --no-commit-id HEAD | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| test "$ret" = 0 && git-diff-tree --summary --root --no-commit-id HEAD | ||||
|  | ||||
| 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
	
	 Nicolas Pitre
						Nicolas Pitre