From: Phillip Wood Date: Tue, 02 Jun 2026 13:00:37 GMT Subject: Re: [GSoC][PATCH 1/4] path: add strbuf_add_path for formatting paths Message-ID: <73c1f6ee-9461-4cf3-8d51-33de05f6d070@gmail.com> In-Reply-To: <20260601151950.30686-2-jayatheerthkulkarni2005@gmail.com> On 01/06/2026 16:19, K Jayatheerth wrote: > > diff --git a/path.h b/path.h > index 0434ba5e07..b9b626ce4a 100644 > --- a/path.h > +++ b/path.h > @@ -262,6 +262,22 @@ enum scld_error safe_create_leading_directories_no_share(char *path); > int safe_create_file_with_leading_directories(struct repository *repo, > const char *path); > > +enum path_format_type { > + PATH_FORMAT_DEFAULT, > + PATH_FORMAT_RELATIVE, > + PATH_FORMAT_CANONICAL > +}; > + > +enum path_default_type { > + PATH_DEFAULT_RELATIVE, > + PATH_DEFAULT_RELATIVE_IF_SHARED, > + PATH_DEFAULT_CANONICAL, > + PATH_DEFAULT_UNMODIFIED > +}; > + > +void strbuf_add_path(struct strbuf *buf, const char *path, const char *prefix, > + enum path_format_type format, enum path_default_type def); This API is very specific to rev-parse and to me at least it is hard to understand. I think it would be clearer if we had a single enum describing the desired format and let the rev-parse code worry about passing the appropriate value based on the options the user passed. enum path_format { PATH_FORMAT_ABSOLUTE, PATH_FORMAT_CANONICAL, PATH_FORMAT_RELATIVE, PATH_FORMAT_RELATIVE_IF_SHARED PATH_FORMAT_UNMODIFIED, }; void format_path(struct strbuf *buf, const char *path, const char *prefix, enum path_format format); We tend to avoid adding "strbuf_" to the beginning of functions these days when they're adding things to a strbuf. This function also needs some documentation explaining what the arguments are. Thanks Phillip