diff options
author | Elijah Newren <newren@gmail.com> | 2021-01-19 19:53:50 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-01-21 06:18:55 (GMT) |
commit | 05b85c6eeb1710ff83f11f71abefa2064e50e61b (patch) | |
tree | 5e44ec1210cdc265351fa2ddeff9c1198785da53 /merge-ort.c | |
parent | bea433655a79b7fbc04444508c55f13ece942a21 (diff) | |
download | git-05b85c6eeb1710ff83f11f71abefa2064e50e61b.zip git-05b85c6eeb1710ff83f11f71abefa2064e50e61b.tar.gz git-05b85c6eeb1710ff83f11f71abefa2064e50e61b.tar.bz2 |
merge-ort: add a new toplevel_dir field
Due to the string-equality-iff-pointer-equality requirements placed on
merged_info.directory_name, apply_directory_rename_modifications() will
need to have access to the exact toplevel directory name string pointer
and can't just use a new empty string. Store it in a field that we can
use.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-ort.c')
-rw-r--r-- | merge-ort.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/merge-ort.c b/merge-ort.c index ad8ecb7..5b3b56d 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -168,12 +168,15 @@ struct merge_options_internal { struct rename_info renames; /* - * current_dir_name: temporary var used in collect_merge_info_callback() + * current_dir_name, toplevel_dir: temporary vars * - * Used to set merged_info.directory_name; see documentation for that - * variable and the requirements placed on that field. + * These are used in collect_merge_info_callback(), and will set the + * various merged_info.directory_name for the various paths we get; + * see documentation for that variable and the requirements placed on + * that field. */ const char *current_dir_name; + const char *toplevel_dir; /* call_depth: recursion level counter for merging merge bases */ int call_depth; @@ -682,10 +685,10 @@ static int collect_merge_info(struct merge_options *opt, int ret; struct tree_desc t[3]; struct traverse_info info; - const char *toplevel_dir_placeholder = ""; - opt->priv->current_dir_name = toplevel_dir_placeholder; - setup_traverse_info(&info, toplevel_dir_placeholder); + opt->priv->toplevel_dir = ""; + opt->priv->current_dir_name = opt->priv->toplevel_dir; + setup_traverse_info(&info, opt->priv->toplevel_dir); info.fn = collect_merge_info_callback; info.data = opt; info.show_all_errors = 1; |