Skip to content

Commit

Permalink
git log [diff-tree options]...
Browse files Browse the repository at this point in the history
And this makes "git log" to take common diff-tree options, so
that it can be used as "git whatchanged".

The recent revision walker updates by Linus to make path
limiting low-latency helps this quite a bit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Apr 9, 2006
1 parent 5f1c3f0 commit 52b70d5
Showing 1 changed file with 31 additions and 1 deletion.
32 changes: 31 additions & 1 deletion git.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
#include "cache.h"
#include "commit.h"
#include "revision.h"
#include "diff.h"
#include "log-tree.h"

#ifndef PATH_MAX
# define PATH_MAX 4096
Expand Down Expand Up @@ -285,7 +287,10 @@ static int cmd_log(int argc, const char **argv, char **envp)
int abbrev = DEFAULT_ABBREV;
int abbrev_commit = 0;
const char *commit_prefix = "commit ";
struct log_tree_opt opt;
int do_diff = 0;

init_log_tree_opt(&opt);
argc = setup_revisions(argc, argv, &rev, "HEAD");
while (1 < argc) {
const char *arg = argv[1];
Expand All @@ -310,10 +315,32 @@ static int cmd_log(int argc, const char **argv, char **envp)
else if (40 < abbrev)
abbrev = 40;
}
else
else {
int cnt = log_tree_opt_parse(&opt, argv+1, argc-1);
if (0 < cnt) {
do_diff = 1;
argv += cnt;
argc -= cnt;
continue;
}
die("unrecognized argument: %s", arg);
}

argc--; argv++;
}
if (do_diff) {
opt.diffopt.abbrev = abbrev;
opt.verbose_header = 0;
opt.always_show_header = 0;
opt.no_commit_id = 1;
if (opt.combine_merges)
opt.ignore_merges = 0;
if (opt.dense_combined_merges)
opt.diffopt.output_format = DIFF_FORMAT_PATCH;
if (opt.diffopt.output_format == DIFF_FORMAT_PATCH)
opt.diffopt.recursive = 1;
diff_setup_done(&opt.diffopt);
}

prepare_revision_walk(&rev);
setup_pager();
Expand Down Expand Up @@ -350,6 +377,9 @@ static int cmd_log(int argc, const char **argv, char **envp)
pretty_print_commit(commit_format, commit, ~0, buf,
LOGSIZE, abbrev);
printf("%s\n", buf);

if (do_diff)
log_tree_commit(&opt, commit);
}
free(buf);
return 0;
Expand Down

0 comments on commit 52b70d5

Please sign in to comment.