Re: [GSoC][PATCH 1/4] path: add strbuf_add_path for formatting paths
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Jun 2, 2026, 13:00 UTC
- 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:
Show 24 quoted lines
>
> 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