Merge branch 'ch/chdir-notify-drop-name'

The unused name parameter in 'struct chdir_notify_entry' has been
removed from chdir_notify_register(), chdir_notify_unregister(), and
related callback signatures across several subsystems, simplifying the
API now that trace output no longer uses it.

* ch/chdir-notify-drop-name:
  chdir-notify.h: Removed unused param 'name'
main
Junio C Hamano 2026-08-25 10:53:33 -07:00
commit 3caf98a8bf
10 changed files with 30 additions and 44 deletions

View File

@ -7,25 +7,22 @@
#include "trace.h" #include "trace.h"


struct chdir_notify_entry { struct chdir_notify_entry {
const char *name;
chdir_notify_callback cb; chdir_notify_callback cb;
void *data; void *data;
struct list_head list; struct list_head list;
}; };
static LIST_HEAD(chdir_notify_entries); static LIST_HEAD(chdir_notify_entries);


void chdir_notify_register(const char *name, void chdir_notify_register(chdir_notify_callback cb,
chdir_notify_callback cb,
void *data) void *data)
{ {
struct chdir_notify_entry *e = xmalloc(sizeof(*e)); struct chdir_notify_entry *e = xmalloc(sizeof(*e));
e->name = name;
e->cb = cb; e->cb = cb;
e->data = data; e->data = data;
list_add_tail(&e->list, &chdir_notify_entries); list_add_tail(&e->list, &chdir_notify_entries);
} }


void chdir_notify_unregister(const char *name, chdir_notify_callback cb, void chdir_notify_unregister(chdir_notify_callback cb,
void *data) void *data)
{ {
struct list_head *pos, *p; struct list_head *pos, *p;
@ -34,8 +31,7 @@ void chdir_notify_unregister(const char *name, chdir_notify_callback cb,
struct chdir_notify_entry *e = struct chdir_notify_entry *e =
list_entry(pos, struct chdir_notify_entry, list); list_entry(pos, struct chdir_notify_entry, list);


if (e->cb != cb || e->data != data || !e->name != !name || if (e->cb != cb || e->data != data)
(e->name && strcmp(e->name, name)))
continue; continue;


list_del(pos); list_del(pos);
@ -64,7 +60,7 @@ int chdir_notify(const char *new_cwd)
list_for_each(pos, &chdir_notify_entries) { list_for_each(pos, &chdir_notify_entries) {
struct chdir_notify_entry *e = struct chdir_notify_entry *e =
list_entry(pos, struct chdir_notify_entry, list); list_entry(pos, struct chdir_notify_entry, list);
e->cb(e->name, old_cwd.buf, new_cwd, e->data); e->cb(old_cwd.buf, new_cwd, e->data);
} }


strbuf_release(&old_cwd); strbuf_release(&old_cwd);

View File

@ -33,13 +33,11 @@
* $GIT_TRACE_SETUP. It may be NULL, but if non-NULL should point to * $GIT_TRACE_SETUP. It may be NULL, but if non-NULL should point to
* storage which lasts as long as the registration is active. * storage which lasts as long as the registration is active.
*/ */
typedef void (*chdir_notify_callback)(const char *name, typedef void (*chdir_notify_callback)(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *data); void *data);
void chdir_notify_register(const char *name, chdir_notify_callback cb, void *data); void chdir_notify_register(chdir_notify_callback cb, void *data);
void chdir_notify_unregister(const char *name, chdir_notify_callback cb, void chdir_notify_unregister(chdir_notify_callback cb, void *data);
void *data);


/* /*
* *

View File

@ -22,8 +22,7 @@
#include "tree.h" #include "tree.h"
#include "write-or-die.h" #include "write-or-die.h"


static void odb_source_files_reparent(const char *name UNUSED, static void odb_source_files_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *cb_data) void *cb_data)
{ {
@ -37,7 +36,7 @@ static void odb_source_files_reparent(const char *name UNUSED,
static void odb_source_files_free(struct odb_source *source) static void odb_source_files_free(struct odb_source *source)
{ {
struct odb_source_files *files = odb_source_files_downcast(source); struct odb_source_files *files = odb_source_files_downcast(source);
chdir_notify_unregister(NULL, odb_source_files_reparent, files); chdir_notify_unregister(odb_source_files_reparent, files);
odb_source_free(&files->loose->base); odb_source_free(&files->loose->base);
odb_source_free(&files->packed->base); odb_source_free(&files->packed->base);
odb_source_release(&files->base); odb_source_release(&files->base);
@ -780,7 +779,7 @@ struct odb_source_files *odb_source_files_new(struct object_database *odb,
* paths in the primary ODB source in some user-facing functionality. * paths in the primary ODB source in some user-facing functionality.
*/ */
if (!is_absolute_path(path)) if (!is_absolute_path(path))
chdir_notify_register(NULL, odb_source_files_reparent, files); chdir_notify_register(odb_source_files_reparent, files);


return files; return files;
} }

View File

@ -1009,8 +1009,7 @@ static void odb_source_loose_close(struct odb_source *source UNUSED)
/* Nothing to do. */ /* Nothing to do. */
} }


static void odb_source_loose_reparent(const char *name UNUSED, static void odb_source_loose_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *cb_data) void *cb_data)
{ {
@ -1026,7 +1025,7 @@ static void odb_source_loose_free(struct odb_source *source)
struct odb_source_loose *loose = odb_source_loose_downcast(source); struct odb_source_loose *loose = odb_source_loose_downcast(source);
odb_source_loose_clear_cache(loose); odb_source_loose_clear_cache(loose);
loose_object_map_clear(&loose->map); loose_object_map_clear(&loose->map);
chdir_notify_unregister(NULL, odb_source_loose_reparent, loose); chdir_notify_unregister(odb_source_loose_reparent, loose);
odb_source_release(&loose->base); odb_source_release(&loose->base);
free(loose); free(loose);
} }
@ -1056,7 +1055,7 @@ struct odb_source_loose *odb_source_loose_new(struct object_database *odb,
loose->base.write_alternate = odb_source_loose_write_alternate; loose->base.write_alternate = odb_source_loose_write_alternate;


if (!is_absolute_path(loose->base.path)) if (!is_absolute_path(loose->base.path))
chdir_notify_register(NULL, odb_source_loose_reparent, loose); chdir_notify_register(odb_source_loose_reparent, loose);


loose_object_map_load(loose); loose_object_map_load(loose);



View File

@ -785,8 +785,7 @@ static void odb_source_packed_prepare(struct odb_source *source,
packed->initialized = true; packed->initialized = true;
} }


static void odb_source_packed_reparent(const char *name UNUSED, static void odb_source_packed_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *cb_data) void *cb_data)
{ {
@ -815,7 +814,7 @@ static void odb_source_packed_free(struct odb_source *source)
{ {
struct odb_source_packed *packed = odb_source_packed_downcast(source); struct odb_source_packed *packed = odb_source_packed_downcast(source);


chdir_notify_unregister(NULL, odb_source_packed_reparent, packed); chdir_notify_unregister(odb_source_packed_reparent, packed);


for (struct packfile_list_entry *e = packed->packs.head; e; e = e->next) for (struct packfile_list_entry *e = packed->packs.head; e; e = e->next)
free(e->pack); free(e->pack);
@ -852,7 +851,7 @@ struct odb_source_packed *odb_source_packed_new(struct object_database *odb,
packed->base.write_alternate = odb_source_packed_write_alternate; packed->base.write_alternate = odb_source_packed_write_alternate;


if (!is_absolute_path(path)) if (!is_absolute_path(path))
chdir_notify_register(NULL, odb_source_packed_reparent, packed); chdir_notify_register(odb_source_packed_reparent, packed);


return packed; return packed;
} }

View File

@ -111,8 +111,7 @@ static void clear_loose_ref_cache(struct files_ref_store *refs)
} }
} }


static void files_ref_store_reparent(const char *name UNUSED, static void files_ref_store_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *payload) void *payload)
{ {
@ -182,7 +181,7 @@ static struct ref_store *files_ref_store_init(struct repository *repo,
packed_ref_store_init(repo, NULL, refs->gitcommondir, opts); packed_ref_store_init(repo, NULL, refs->gitcommondir, opts);
refs->store_flags = opts->access_flags; refs->store_flags = opts->access_flags;


chdir_notify_register(NULL, files_ref_store_reparent, refs); chdir_notify_register(files_ref_store_reparent, refs);


strbuf_release(&refdir); strbuf_release(&refdir);


@ -234,7 +233,7 @@ static void files_ref_store_release(struct ref_store *ref_store)
free(refs->gitcommondir); free(refs->gitcommondir);
ref_store_release(refs->packed_ref_store); ref_store_release(refs->packed_ref_store);
free(refs->packed_ref_store); free(refs->packed_ref_store);
chdir_notify_unregister(NULL, files_ref_store_reparent, refs); chdir_notify_unregister(files_ref_store_reparent, refs);
} }


static void files_reflog_path(struct files_ref_store *refs, static void files_reflog_path(struct files_ref_store *refs,

View File

@ -217,8 +217,7 @@ static size_t snapshot_hexsz(const struct snapshot *snapshot)
return snapshot->refs->base.repo->hash_algo->hexsz; return snapshot->refs->base.repo->hash_algo->hexsz;
} }


static void packed_ref_store_reparent(const char *name UNUSED, static void packed_ref_store_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *payload) void *payload)
{ {
@ -248,7 +247,7 @@ struct ref_store *packed_ref_store_init(struct repository *repo,


strbuf_addf(&sb, "%s/packed-refs", gitdir); strbuf_addf(&sb, "%s/packed-refs", gitdir);
refs->path = strbuf_detach(&sb, NULL); refs->path = strbuf_detach(&sb, NULL);
chdir_notify_register(NULL, packed_ref_store_reparent, refs); chdir_notify_register(packed_ref_store_reparent, refs);
return ref_store; return ref_store;
} }


@ -293,7 +292,7 @@ static void packed_ref_store_release(struct ref_store *ref_store)
clear_snapshot(refs); clear_snapshot(refs);
rollback_lock_file(&refs->lock); rollback_lock_file(&refs->lock);
delete_tempfile(&refs->tempfile); delete_tempfile(&refs->tempfile);
chdir_notify_unregister(NULL, packed_ref_store_reparent, refs); chdir_notify_unregister(packed_ref_store_reparent, refs);
free(refs->path); free(refs->path);
} }



View File

@ -391,8 +391,7 @@ static const struct reftable_be_write_options *reftable_be_write_options(struct
return opts; return opts;
} }


static void reftable_be_reparent(const char *name UNUSED, static void reftable_be_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *payload) void *payload)
{ {
@ -465,7 +464,7 @@ static struct ref_store *reftable_be_init(struct repository *repo,
goto done; goto done;
} }


chdir_notify_register(NULL, reftable_be_reparent, refs); chdir_notify_register(reftable_be_reparent, refs);


done: done:
assert(refs->err != REFTABLE_API_ERROR); assert(refs->err != REFTABLE_API_ERROR);
@ -492,7 +491,7 @@ static void reftable_be_release(struct ref_store *ref_store)
free(be); free(be);
} }
strmap_clear(&refs->worktree_backends, 0); strmap_clear(&refs->worktree_backends, 0);
chdir_notify_unregister(NULL, reftable_be_reparent, refs); chdir_notify_unregister(reftable_be_reparent, refs);
} }


static int reftable_be_create_on_disk(struct ref_store *ref_store, static int reftable_be_create_on_disk(struct ref_store *ref_store,

View File

@ -1057,8 +1057,7 @@ static void apply_gitdir_and_environment(struct repository *repo, const char *pa
strvec_clear(&to_free); strvec_clear(&to_free);
} }


static void update_relative_gitdir(const char *name UNUSED, static void update_relative_gitdir(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *data) void *data)
{ {
@ -1086,7 +1085,7 @@ static void apply_and_export_relative_gitdir(struct repository *repo, const char
xsetenv(GIT_DIR_ENVIRONMENT, path, 1); xsetenv(GIT_DIR_ENVIRONMENT, path, 1);


if (!is_absolute_path(path)) if (!is_absolute_path(path))
chdir_notify_register(NULL, update_relative_gitdir, repo); chdir_notify_register(update_relative_gitdir, repo);


strbuf_release(&realpath); strbuf_release(&realpath);
} }

View File

@ -37,8 +37,7 @@ static void tmp_objdir_free(struct tmp_objdir *t)
free(t); free(t);
} }


static void tmp_objdir_reparent(const char *name UNUSED, static void tmp_objdir_reparent(const char *old_cwd,
const char *old_cwd,
const char *new_cwd, const char *new_cwd,
void *cb_data) void *cb_data)
{ {
@ -67,7 +66,7 @@ int tmp_objdir_destroy(struct tmp_objdir *t)


err = remove_dir_recursively(&t->path, 0); err = remove_dir_recursively(&t->path, 0);


chdir_notify_unregister(NULL, tmp_objdir_reparent, t); chdir_notify_unregister(tmp_objdir_reparent, t);
tmp_objdir_free(t); tmp_objdir_free(t);


return err; return err;
@ -155,7 +154,7 @@ struct tmp_objdir *tmp_objdir_create(struct repository *r,
repo_get_object_directory(r), prefix); repo_get_object_directory(r), prefix);


if (!is_absolute_path(t->path.buf)) if (!is_absolute_path(t->path.buf))
chdir_notify_register(NULL, tmp_objdir_reparent, t); chdir_notify_register(tmp_objdir_reparent, t);


if (!mkdtemp(t->path.buf)) { if (!mkdtemp(t->path.buf)) {
/* free, not destroy, as we never touched the filesystem */ /* free, not destroy, as we never touched the filesystem */