summaryrefslogtreecommitdiff
path: root/merge-ort.c
diff options
context:
space:
mode:
authorElijah Newren <newren@gmail.com>2021-01-19 19:53:50 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-01-21 06:18:55 (GMT)
commit05b85c6eeb1710ff83f11f71abefa2064e50e61b (patch)
tree5e44ec1210cdc265351fa2ddeff9c1198785da53 /merge-ort.c
parentbea433655a79b7fbc04444508c55f13ece942a21 (diff)
downloadgit-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.c15
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;