70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
| /*
 | |
|  * Builtin "git log" and related commands (show, whatchanged)
 | |
|  *
 | |
|  * (C) Copyright 2006 Linus Torvalds
 | |
|  *		 2006 Junio Hamano
 | |
|  */
 | |
| #include "cache.h"
 | |
| #include "commit.h"
 | |
| #include "diff.h"
 | |
| #include "revision.h"
 | |
| #include "log-tree.h"
 | |
| 
 | |
| static int cmd_log_wc(int argc, const char **argv, char **envp,
 | |
| 		      struct rev_info *rev)
 | |
| {
 | |
| 	struct commit *commit;
 | |
| 
 | |
| 	rev->abbrev = DEFAULT_ABBREV;
 | |
| 	rev->commit_format = CMIT_FMT_DEFAULT;
 | |
| 	rev->verbose_header = 1;
 | |
| 	argc = setup_revisions(argc, argv, rev, "HEAD");
 | |
| 
 | |
| 	if (argc > 1)
 | |
| 		die("unrecognized argument: %s", argv[1]);
 | |
| 
 | |
| 	prepare_revision_walk(rev);
 | |
| 	setup_pager();
 | |
| 	while ((commit = get_revision(rev)) != NULL) {
 | |
| 		log_tree_commit(rev, commit);
 | |
| 		free(commit->buffer);
 | |
| 		commit->buffer = NULL;
 | |
| 	}
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| int cmd_whatchanged(int argc, const char **argv, char **envp)
 | |
| {
 | |
| 	struct rev_info rev;
 | |
| 
 | |
| 	init_revisions(&rev);
 | |
| 	rev.diff = 1;
 | |
| 	rev.diffopt.recursive = 1;
 | |
| 	return cmd_log_wc(argc, argv, envp, &rev);
 | |
| }
 | |
| 
 | |
| int cmd_show(int argc, const char **argv, char **envp)
 | |
| {
 | |
| 	struct rev_info rev;
 | |
| 
 | |
| 	init_revisions(&rev);
 | |
| 	rev.diff = 1;
 | |
| 	rev.diffopt.recursive = 1;
 | |
| 	rev.combine_merges = 1;
 | |
| 	rev.dense_combined_merges = 1;
 | |
| 	rev.always_show_header = 1;
 | |
| 	rev.ignore_merges = 0;
 | |
| 	rev.no_walk = 1;
 | |
| 	return cmd_log_wc(argc, argv, envp, &rev);
 | |
| }
 | |
| 
 | |
| int cmd_log(int argc, const char **argv, char **envp)
 | |
| {
 | |
| 	struct rev_info rev;
 | |
| 
 | |
| 	init_revisions(&rev);
 | |
| 	rev.always_show_header = 1;
 | |
| 	rev.diffopt.recursive = 1;
 | |
| 	return cmd_log_wc(argc, argv, envp, &rev);
 | |
| }
 |