Skip to content

Commit

Permalink
merge-trees: push choice to renormalize away from low level
Browse files Browse the repository at this point in the history
The merge machinery decides whether to resmudge and clean relevant
entries based on the global merge_renormalize setting, which is set by
"git merge" based on its configuration (and left alone by other
commands).

A nicer interface would make that decision a parameter to merge_trees
so callers would pass in a choice made on a call-by-call basis.
Start by making blob_unchanged stop examining the merge_renormalize
global.

In other words, this change is a trivial no-op, but it brings us
closer to something good.

Cc: Eyvind Bernhardsen <eyvind.bernhardsen@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Aug 6, 2010
1 parent beeeb45 commit 3e7589b
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions merge-recursive.c
Original file line number Diff line number Diff line change
Expand Up @@ -1074,15 +1074,15 @@ static int read_sha1_strbuf(const unsigned char *sha1, struct strbuf *dst)

static int blob_unchanged(const unsigned char *o_sha,
const unsigned char *a_sha,
const char *path)
int renormalize, const char *path)
{
struct strbuf o = STRBUF_INIT;
struct strbuf a = STRBUF_INIT;
int ret = 0; /* assume changed for safety */

if (sha_eq(o_sha, a_sha))
return 1;
if (!merge_renormalize)
if (!renormalize)
return 0;

assert(o_sha && a_sha);
Expand Down Expand Up @@ -1112,6 +1112,7 @@ static int process_entry(struct merge_options *o,
print_index_entry("\tpath: ", entry);
*/
int clean_merge = 1;
int normalize = merge_renormalize;
unsigned o_mode = entry->stages[1].mode;
unsigned a_mode = entry->stages[2].mode;
unsigned b_mode = entry->stages[3].mode;
Expand All @@ -1122,8 +1123,8 @@ static int process_entry(struct merge_options *o,
if (o_sha && (!a_sha || !b_sha)) {
/* Case A: Deleted in one */
if ((!a_sha && !b_sha) ||
(!b_sha && blob_unchanged(o_sha, a_sha, path)) ||
(!a_sha && blob_unchanged(o_sha, b_sha, path))) {
(!b_sha && blob_unchanged(o_sha, a_sha, normalize, path)) ||
(!a_sha && blob_unchanged(o_sha, b_sha, normalize, path))) {
/* Deleted in both or deleted in one and
* unchanged in the other */
if (a_sha)
Expand Down

0 comments on commit 3e7589b

Please sign in to comment.