aboutsummaryrefslogtreecommitdiff
path: root/blame.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-04-10 18:14:54 -0700
committerJunio C Hamano <junkio@cox.net>2006-04-10 19:17:31 -0700
commitc4e05b1a2290c605e68e6dac5e2a580e6d4080b7 (patch)
treeea41950c4519a6665503ec4fc9a4d2d2e17c55bc /blame.c
parent477f2b41310c4b1040a9e7f72720b9c39d82caf9 (diff)
downloadgit-c4e05b1a2290c605e68e6dac5e2a580e6d4080b7.tar.gz
git-c4e05b1a2290c605e68e6dac5e2a580e6d4080b7.tar.xz
blame and friends: adjust to multiple pathspec change.
This makes things that include revision.h build again. Blame is also built, but I am not sure how well it works (or how well it worked to begin with) -- it was relying on tree-diff to be using whatever pathspec was used the last time, which smells a bit suspicious. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'blame.c')
-rw-r--r--blame.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/blame.c b/blame.c
index 6730b10b1..07d2d2725 100644
--- a/blame.c
+++ b/blame.c
@@ -508,25 +508,33 @@ static void process_commits(struct rev_info *rev, const char *path,
static int compare_tree_path(struct rev_info* revs,
struct commit* c1, struct commit* c2)
{
+ int ret;
const char* paths[2];
struct util_info* util = c2->object.util;
paths[0] = util->pathname;
paths[1] = NULL;
- diff_tree_setup_paths(get_pathspec(revs->prefix, paths));
- return rev_compare_tree(c1->tree, c2->tree);
+ diff_tree_setup_paths(get_pathspec(revs->prefix, paths),
+ &revs->diffopt);
+ ret = rev_compare_tree(revs, c1->tree, c2->tree);
+ diff_tree_release_paths(&revs->diffopt);
+ return ret;
}
static int same_tree_as_empty_path(struct rev_info *revs, struct tree* t1,
const char* path)
{
+ int ret;
const char* paths[2];
paths[0] = path;
paths[1] = NULL;
- diff_tree_setup_paths(get_pathspec(revs->prefix, paths));
- return rev_same_tree_as_empty(t1);
+ diff_tree_setup_paths(get_pathspec(revs->prefix, paths),
+ &revs->diffopt);
+ ret = rev_same_tree_as_empty(revs, t1);
+ diff_tree_release_paths(&revs->diffopt);
+ return ret;
}
static const char* find_rename(struct commit* commit, struct commit* parent)
@@ -546,7 +554,7 @@ static const char* find_rename(struct commit* commit, struct commit* parent)
diff_opts.recursive = 1;
diff_opts.detect_rename = DIFF_DETECT_RENAME;
paths[0] = NULL;
- diff_tree_setup_paths(paths);
+ diff_tree_setup_paths(paths, &diff_opts);
if (diff_setup_done(&diff_opts) < 0)
die("diff_setup_done failed");
@@ -826,7 +834,7 @@ int main(int argc, const char **argv)
args[0] = filename;
args[1] = NULL;
- diff_tree_setup_paths(args);
+ diff_tree_setup_paths(args, &rev.diffopt);
prepare_revision_walk(&rev);
process_commits(&rev, filename, &initial);