From: Junio C Hamano Date: Mon, 26 Aug 2019 17:35:42 +0000 (-0700) Subject: Revert "Merge branch 'bc/reread-attributes-during-rebase' into next" X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0b9fbb37342f311abeee5a6f225e59c3ff0bea54;p=git Revert "Merge branch 'bc/reread-attributes-during-rebase' into next" This reverts commit 14aaf533d64c84894b914766b728439c362bb837, reversing changes made to de88e8e58ae18d5c9a49814d212c813db4604cf5, to replace it with an updated version. --- diff --git a/apply.c b/apply.c index d57bc635e4..cde95369bb 100644 --- a/apply.c +++ b/apply.c @@ -4643,7 +4643,6 @@ 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) @@ -4671,10 +4670,6 @@ 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) @@ -4751,8 +4746,6 @@ 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); diff --git a/convert.c b/convert.c index 030e9b81b9..94ff837649 100644 --- a/convert.c +++ b/convert.c @@ -1293,11 +1293,10 @@ struct conv_attrs { const char *working_tree_encoding; /* Supported encoding or default encoding if NULL */ }; -static struct attr_check *check; - static void convert_attrs(const struct index_state *istate, struct conv_attrs *ca, const char *path) { + static struct attr_check *check; struct attr_check_item *ccheck = NULL; if (!check) { @@ -1340,12 +1339,6 @@ static void convert_attrs(const struct index_state *istate, ca->crlf_action = CRLF_AUTO_INPUT; } -void reset_parsed_attributes(void) -{ - attr_check_free(check); - check = NULL; -} - int would_convert_to_git_filter_fd(const struct index_state *istate, const char *path) { struct conv_attrs ca; diff --git a/convert.h b/convert.h index 3710969d43..831559f10d 100644 --- a/convert.h +++ b/convert.h @@ -94,12 +94,6 @@ void convert_to_git_filter_fd(const struct index_state *istate, int would_convert_to_git_filter_fd(const struct index_state *istate, const char *path); -/* - * Reset the internal list of attributes used by convert_to_git and - * convert_to_working_tree. - */ -void reset_parsed_attributes(void); - /***************************************************************** * * Streaming conversion support diff --git a/path.c b/path.c index e3da1f3c4e..25e97b8c3f 100644 --- a/path.c +++ b/path.c @@ -1221,52 +1221,31 @@ static inline int chomp_trailing_dir_sep(const char *path, int len) } /* - * If path ends with suffix (complete path components), returns the offset of - * the last character in the path before the suffix (sans trailing directory - * separators), and -1 otherwise. + * If path ends with suffix (complete path components), returns the + * part before suffix (sans trailing directory separators). + * Otherwise returns NULL. */ -static ssize_t stripped_path_suffix_offset(const char *path, const char *suffix) +char *strip_path_suffix(const char *path, const char *suffix) { int path_len = strlen(path), suffix_len = strlen(suffix); while (suffix_len) { if (!path_len) - return -1; + return NULL; if (is_dir_sep(path[path_len - 1])) { if (!is_dir_sep(suffix[suffix_len - 1])) - return -1; + return NULL; path_len = chomp_trailing_dir_sep(path, path_len); suffix_len = chomp_trailing_dir_sep(suffix, suffix_len); } else if (path[--path_len] != suffix[--suffix_len]) - return -1; + return NULL; } if (path_len && !is_dir_sep(path[path_len - 1])) - return -1; - return chomp_trailing_dir_sep(path, path_len); -} - -/* - * Returns true if the path ends with components, considering only complete path - * components, and false otherwise. - */ -int ends_with_path_components(const char *path, const char *components) -{ - return stripped_path_suffix_offset(path, components) != -1; -} - -/* - * If path ends with suffix (complete path components), returns the - * part before suffix (sans trailing directory separators). - * Otherwise returns NULL. - */ -char *strip_path_suffix(const char *path, const char *suffix) -{ - ssize_t offset = stripped_path_suffix_offset(path, suffix); - - return offset == -1 ? NULL : xstrndup(path, offset); + return NULL; + return xstrndup(path, chomp_trailing_dir_sep(path, path_len)); } int daemon_avoid_alias(const char *p) diff --git a/path.h b/path.h index 14d6dcad16..2ba6ca58c8 100644 --- a/path.h +++ b/path.h @@ -193,7 +193,4 @@ const char *git_path_merge_head(struct repository *r); const char *git_path_fetch_head(struct repository *r); const char *git_path_shallow(struct repository *r); - -int ends_with_path_components(const char *path, const char *components); - #endif /* PATH_H */ diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 23469cc789..80b23fd326 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -301,42 +301,6 @@ test_expect_success 'rebase --am and --show-current-patch' ' ) ' -test_expect_success 'rebase --am and .gitattributes' ' - test_create_repo attributes && - ( - cd attributes && - test_commit init && - git config filter.test.clean "sed -e '\''s/smudged/clean/g'\''" && - git config filter.test.smudge "sed -e '\''s/clean/smudged/g'\''" && - - test_commit second && - git checkout -b test HEAD^ && - - echo "*.txt filter=test" >.gitattributes && - git add .gitattributes && - test_commit third && - - echo "This text is smudged." >a.txt && - git add a.txt && - test_commit fourth && - - git checkout -b removal HEAD^ && - git rm .gitattributes && - git add -u && - test_commit fifth && - git cherry-pick test && - - git checkout test && - git rebase master && - grep "smudged" a.txt && - - git checkout removal && - git reset --hard && - git rebase master && - grep "clean" a.txt - ) -' - test_expect_success 'rebase--merge.sh and --show-current-patch' ' test_create_repo conflict-merge && (