On Wed, May 31, 2017 at 2:43 PM, Brandon Williams <[email protected]> wrote:
> Use 'skip_prefix' instead of 'starts_with' so that we can drop the need
> to keep around 'namespace_len'.
Looks correct.
Performance wise:
The strip_namespace function is only called from {receive/upload}-pack
and http-backend, so all network operations, whose actual operations
should far outweight the tiny CPU saving that this reverts.
We should be fine?
> Signed-off-by: Brandon Williams <[email protected]>
> ---
> environment.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/environment.c b/environment.c
> index a73b08f5d..e035f6372 100644
> --- a/environment.c
> +++ b/environment.c
> @@ -98,7 +98,6 @@ char *git_work_tree_cfg;
> static char *work_tree;
>
> static const char *namespace;
> -static size_t namespace_len;
>
> static const char *super_prefix;
>
> @@ -190,7 +189,6 @@ void setup_git_env(void)
> git_replace_ref_base = xstrdup(replace_ref_base ? replace_ref_base
> : "refs/replace/");
> namespace = expand_namespace(getenv(GIT_NAMESPACE_ENVIRONMENT));
> - namespace_len = strlen(namespace);
> shallow_file = getenv(GIT_SHALLOW_FILE_ENVIRONMENT);
> if (shallow_file)
> set_alternate_shallow_file(shallow_file, 0);
> @@ -231,9 +229,10 @@ const char *get_git_namespace(void)
>
> const char *strip_namespace(const char *namespaced_ref)
> {
> - if (!starts_with(namespaced_ref, get_git_namespace()))
> - return NULL;
> - return namespaced_ref + namespace_len;
> + const char *out;
> + if (skip_prefix(namespaced_ref, get_git_namespace(), &out))
> + return out;
> + return NULL;
> }
>
> const char *get_super_prefix(void)
> --
> 2.13.0.506.g27d5fe0cd-goog
>