[PATCH v3 0/2] Honor .gitattributes with rebase --am
- From
brian m. carlson <sandals@crustytoothpaste.net>
- Date
- Aug 13, 2019, 02:43 UTC
- Message-ID
- <20190813024307.705016-1-sandals@crustytoothpaste.net>
- In-Reply-To
- <20190809100217.427178-1-sandals@crustytoothpaste.net>
This series makes rebase --am honor the .gitattributes file for subsequent patches when a patch changes it.
Changes from v2: * Rename has_path_suffix to ends_with_path_components.
Changes from v1: * Add has_path_suffix in a separate commit.
brian m. carlson (2): path: add a function to check for path suffix apply: reload .gitattributes after patching it
apply.c | 7 +++++++ convert.c | 9 ++++++++- convert.h | 6 ++++++ path.c | 39 ++++++++++++++++++++++++++++++--------- path.h | 3 +++ t/t3400-rebase.sh | 23 +++++++++++++++++++++++ 6 files changed, 77 insertions(+), 10 deletions(-)
Range-diff against v2:
1: 125fda966c ! 1: 14c853420b path: add a function to check for path suffix
@@ Commit message
have one to check for a path suffix. For a plain filename, we can use
basename, but that requires an allocation, since POSIX allows it to
modify its argument. Refactor strip_path_suffix into a helper function
- and a new function, has_path_suffix to meet this need.
+ and a new function, ends_with_path_components, to meet this need.
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
@@ path.c: static inline int chomp_trailing_dir_sep(const char *path, int len)
+}
+
+/*
-+ * Returns true if the path ends with suffix, considering only complete path
-+ * components and false otherwise.
++ * Returns true if the path ends with components, considering only complete path
++ * components, and false otherwise.
+ */
-+int has_path_suffix(const char *path, const char *suffix)
++int ends_with_path_components(const char *path, const char *components)
+{
-+ return stripped_path_suffix_offset(path, suffix) != -1;
++ return stripped_path_suffix_offset(path, components) != -1;
+}
+
/*
@@ path.h: const char *git_path_merge_head(struct repository *r);
const char *git_path_shallow(struct repository *r);
+
-+int has_path_suffix(const char *path, const char *suffix);
++int ends_with_path_components(const char *path, const char *components);
+
#endif /* PATH_H */
2: f54af7e595 ! 2: 5f4402b38d apply: reload .gitattributes after patching it
@@ apply.c: static int apply_patch(struct apply_state *state,
listp = &patch->next;
+
+ if (!flush_attributes && patch->new_name &&
-+ has_path_suffix(patch->new_name, GITATTRIBUTES_FILE))
++ ends_with_path_components(patch->new_name, GITATTRIBUTES_FILE))
+ flush_attributes = 1;
}
else {