diff options
author | Junio C Hamano <junkio@cox.net> | 2007-01-05 01:25:18 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-01-06 22:57:42 -0800 |
commit | e9c8409900fc84cd7721117c98dfe01acd535aa2 (patch) | |
tree | 9904b7d43e86e423dbfc8454a5e7306c24d7cb73 /diff-lib.c | |
parent | 13e86efbeae5994a85cc482b3964db7298c5c6ea (diff) | |
download | git-e9c8409900fc84cd7721117c98dfe01acd535aa2.tar.gz |
diff-index --cached --raw: show tree entry on the LHS for unmerged entries.
This updates the way diffcore represents an unmerged pair
somewhat. It used to be that entries with mode=0 on both sides
were used to represent an unmerged pair, but now it has an
explicit flag. This is to allow diff-index --cached to report
the entry from the tree when the path is unmerged in the index.
This is used in updating "git reset <tree> -- <path>" to restore
absense of the path in the index from the tree.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'diff-lib.c')
-rw-r--r-- | diff-lib.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/diff-lib.c b/diff-lib.c index fc69fb92a5..2c9be60ed9 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -97,7 +97,7 @@ int run_diff_files(struct rev_info *revs, int silent_on_removed) * Show the diff for the 'ce' if we found the one * from the desired stage. */ - diff_unmerge(&revs->diffopt, ce->name); + diff_unmerge(&revs->diffopt, ce->name, 0, null_sha1); if (ce_stage(ce) != diff_unmerged_stage) continue; } @@ -297,9 +297,12 @@ static int diff_cache(struct rev_info *revs, !show_modified(revs, ce, ac[1], 0, cached, match_missing)) break; - /* fallthru */ + diff_unmerge(&revs->diffopt, ce->name, + ntohl(ce->ce_mode), ce->sha1); + break; case 3: - diff_unmerge(&revs->diffopt, ce->name); + diff_unmerge(&revs->diffopt, ce->name, + 0, null_sha1); break; default: |