diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2008-08-28 20:02:12 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-28 20:50:10 -0700 |
commit | 4f38f6b5bafb1f7f85c7b54d0bb0a0e977cd947c (patch) | |
tree | 899a49f15362f957cf67c71b23f9435e5600ebf6 /builtin-diff.c | |
parent | c67b1fa349cc7b4341b32b9ef1c58a3821ce0830 (diff) | |
download | git-4f38f6b5bafb1f7f85c7b54d0bb0a0e977cd947c.tar.gz |
diff*: fix worktree setup
This fixes "git diff", "git diff-files" and "git diff-index" to work
correctly under worktree setup. Because diff* family works in many modes
and not all of them require worktree, Junio made a nice summary
(with a little modification from me):
* diff-files is about comparing with work tree, so it obviously needs a
work tree;
* diff-index also does, except "diff-index --cached" or "diff --cached TREE"
* no-index is about random files outside git context, so it obviously
doesn't need any work tree;
* comparing two (or more) trees doesn't;
* comparing two blobs doesn't;
* comparing a blob with a random file doesn't;
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-diff.c')
-rw-r--r-- | builtin-diff.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/builtin-diff.c b/builtin-diff.c index 7ffea97505..037c3039a4 100644 --- a/builtin-diff.c +++ b/builtin-diff.c @@ -122,6 +122,8 @@ static int builtin_diff_index(struct rev_info *revs, usage(builtin_diff_usage); argv++; argc--; } + if (!cached) + setup_work_tree(); /* * Make sure there is one revision (i.e. pending object), * and there is no revision filtering parameters. @@ -225,6 +227,7 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv (revs->diffopt.output_format & DIFF_FORMAT_PATCH)) revs->combine_merges = revs->dense_combined_merges = 1; + setup_work_tree(); if (read_cache() < 0) { perror("read_cache"); return -1; |