diff options
author | Junio C Hamano <gitster@pobox.com> | 2019-09-09 21:26:40 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-09-09 21:26:40 +0200 |
commit | c8ada15456f951913dbf628a7c441032e90b8e11 (patch) | |
tree | 60e0e012e23b909c6938b2f164b1c8f92bed518a /apply.c | |
parent | Merge branch 'tg/t0021-racefix' (diff) | |
parent | am: reload .gitattributes after patching it (diff) | |
download | git-c8ada15456f951913dbf628a7c441032e90b8e11.tar.xz git-c8ada15456f951913dbf628a7c441032e90b8e11.zip |
Merge branch 'bc/reread-attributes-during-rebase'
The "git am" based backend of "git rebase" ignored the result of
updating ".gitattributes" done in one step when replaying
subsequent steps.
* bc/reread-attributes-during-rebase:
am: reload .gitattributes after patching it
path: add a function to check for path suffix
Diffstat (limited to 'apply.c')
-rw-r--r-- | apply.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -4643,6 +4643,7 @@ static int apply_patch(struct apply_state *state, struct patch *list = NULL, **listp = &list; int skipped_patch = 0; int res = 0; + int flush_attributes = 0; state->patch_input_file = filename; if (read_patch_file(&buf, fd) < 0) @@ -4670,6 +4671,14 @@ static int apply_patch(struct apply_state *state, patch_stats(state, patch); *listp = patch; listp = &patch->next; + + if ((patch->new_name && + ends_with_path_components(patch->new_name, + GITATTRIBUTES_FILE)) || + (patch->old_name && + ends_with_path_components(patch->old_name, + GITATTRIBUTES_FILE))) + flush_attributes = 1; } else { if (state->apply_verbosity > verbosity_normal) @@ -4746,6 +4755,8 @@ static int apply_patch(struct apply_state *state, if (state->summary && state->apply_verbosity > verbosity_silent) summary_patch_list(list); + if (flush_attributes) + reset_parsed_attributes(); end: free_patch_list(list); strbuf_release(&buf); |