summaryrefslogtreecommitdiff
path: root/log-tree.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-04-15 01:59:40 -0700
committerLibravatar Junio C Hamano <junkio@cox.net>2006-04-15 01:59:40 -0700
commit183df63940bf92ea626af64d0057165b8aad24f6 (patch)
tree6069497a703de57e566cdbaa2718ba78e855b3b2 /log-tree.c
parentFix up rev-list option parsing. (diff)
downloadtgif-183df63940bf92ea626af64d0057165b8aad24f6.tar.xz
Revert all the rev-list option parsing changes.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'log-tree.c')
-rw-r--r--log-tree.c60
1 files changed, 55 insertions, 5 deletions
diff --git a/log-tree.c b/log-tree.c
index 04a68e0f57..3d404824a1 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -3,7 +3,57 @@
#include "commit.h"
#include "log-tree.h"
-int log_tree_diff_flush(struct rev_info *opt)
+void init_log_tree_opt(struct log_tree_opt *opt)
+{
+ memset(opt, 0, sizeof *opt);
+ opt->ignore_merges = 1;
+ opt->header_prefix = "";
+ opt->commit_format = CMIT_FMT_RAW;
+ diff_setup(&opt->diffopt);
+}
+
+int log_tree_opt_parse(struct log_tree_opt *opt, const char **av, int ac)
+{
+ const char *arg;
+ int cnt = diff_opt_parse(&opt->diffopt, av, ac);
+ if (0 < cnt)
+ return cnt;
+ arg = *av;
+ if (!strcmp(arg, "-r"))
+ opt->diffopt.recursive = 1;
+ else if (!strcmp(arg, "-t")) {
+ opt->diffopt.recursive = 1;
+ opt->diffopt.tree_in_recursive = 1;
+ }
+ else if (!strcmp(arg, "-m"))
+ opt->ignore_merges = 0;
+ else if (!strcmp(arg, "-c"))
+ opt->combine_merges = 1;
+ else if (!strcmp(arg, "--cc")) {
+ opt->dense_combined_merges = 1;
+ opt->combine_merges = 1;
+ }
+ else if (!strcmp(arg, "-v")) {
+ opt->verbose_header = 1;
+ opt->header_prefix = "diff-tree ";
+ }
+ else if (!strncmp(arg, "--pretty", 8)) {
+ opt->verbose_header = 1;
+ opt->header_prefix = "diff-tree ";
+ opt->commit_format = get_commit_format(arg+8);
+ }
+ else if (!strcmp(arg, "--root"))
+ opt->show_root_diff = 1;
+ else if (!strcmp(arg, "--no-commit-id"))
+ opt->no_commit_id = 1;
+ else if (!strcmp(arg, "--always"))
+ opt->always_show_header = 1;
+ else
+ return 0;
+ return 1;
+}
+
+int log_tree_diff_flush(struct log_tree_opt *opt)
{
diffcore_std(&opt->diffopt);
if (diff_queue_is_empty()) {
@@ -23,7 +73,7 @@ int log_tree_diff_flush(struct rev_info *opt)
return 1;
}
-static int diff_root_tree(struct rev_info *opt,
+static int diff_root_tree(struct log_tree_opt *opt,
const unsigned char *new, const char *base)
{
int retval;
@@ -43,7 +93,7 @@ static int diff_root_tree(struct rev_info *opt,
return retval;
}
-static const char *generate_header(struct rev_info *opt,
+static const char *generate_header(struct log_tree_opt *opt,
const unsigned char *commit_sha1,
const unsigned char *parent_sha1,
const struct commit *commit)
@@ -79,7 +129,7 @@ static const char *generate_header(struct rev_info *opt,
return this_header;
}
-static int do_diff_combined(struct rev_info *opt, struct commit *commit)
+static int do_diff_combined(struct log_tree_opt *opt, struct commit *commit)
{
unsigned const char *sha1 = commit->object.sha1;
@@ -92,7 +142,7 @@ static int do_diff_combined(struct rev_info *opt, struct commit *commit)
return 0;
}
-int log_tree_commit(struct rev_info *opt, struct commit *commit)
+int log_tree_commit(struct log_tree_opt *opt, struct commit *commit)
{
struct commit_list *parents;
unsigned const char *sha1 = commit->object.sha1;