merge-trees: push choice to renormalize away from low level
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>
This commit is contained in:
parent
beeeb45493
commit
3e7589b7b3
@ -1074,7 +1074,7 @@ static int read_sha1_strbuf(const unsigned char *sha1, struct strbuf *dst)
|
|||||||
|
|
||||||
static int blob_unchanged(const unsigned char *o_sha,
|
static int blob_unchanged(const unsigned char *o_sha,
|
||||||
const unsigned char *a_sha,
|
const unsigned char *a_sha,
|
||||||
const char *path)
|
int renormalize, const char *path)
|
||||||
{
|
{
|
||||||
struct strbuf o = STRBUF_INIT;
|
struct strbuf o = STRBUF_INIT;
|
||||||
struct strbuf a = STRBUF_INIT;
|
struct strbuf a = STRBUF_INIT;
|
||||||
@ -1082,7 +1082,7 @@ static int blob_unchanged(const unsigned char *o_sha,
|
|||||||
|
|
||||||
if (sha_eq(o_sha, a_sha))
|
if (sha_eq(o_sha, a_sha))
|
||||||
return 1;
|
return 1;
|
||||||
if (!merge_renormalize)
|
if (!renormalize)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
assert(o_sha && a_sha);
|
assert(o_sha && a_sha);
|
||||||
@ -1112,6 +1112,7 @@ static int process_entry(struct merge_options *o,
|
|||||||
print_index_entry("\tpath: ", entry);
|
print_index_entry("\tpath: ", entry);
|
||||||
*/
|
*/
|
||||||
int clean_merge = 1;
|
int clean_merge = 1;
|
||||||
|
int normalize = merge_renormalize;
|
||||||
unsigned o_mode = entry->stages[1].mode;
|
unsigned o_mode = entry->stages[1].mode;
|
||||||
unsigned a_mode = entry->stages[2].mode;
|
unsigned a_mode = entry->stages[2].mode;
|
||||||
unsigned b_mode = entry->stages[3].mode;
|
unsigned b_mode = entry->stages[3].mode;
|
||||||
@ -1122,8 +1123,8 @@ static int process_entry(struct merge_options *o,
|
|||||||
if (o_sha && (!a_sha || !b_sha)) {
|
if (o_sha && (!a_sha || !b_sha)) {
|
||||||
/* Case A: Deleted in one */
|
/* Case A: Deleted in one */
|
||||||
if ((!a_sha && !b_sha) ||
|
if ((!a_sha && !b_sha) ||
|
||||||
(!b_sha && blob_unchanged(o_sha, a_sha, path)) ||
|
(!b_sha && blob_unchanged(o_sha, a_sha, normalize, path)) ||
|
||||||
(!a_sha && blob_unchanged(o_sha, b_sha, path))) {
|
(!a_sha && blob_unchanged(o_sha, b_sha, normalize, path))) {
|
||||||
/* Deleted in both or deleted in one and
|
/* Deleted in both or deleted in one and
|
||||||
* unchanged in the other */
|
* unchanged in the other */
|
||||||
if (a_sha)
|
if (a_sha)
|
||||||
|
Loading…
Reference in New Issue
Block a user