Re: [PATCH] teach fast-export an --anonymize option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 21, 2014, 20:15 UTC
- Message-ID
- <xmqqmwaxr44x.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20140821070130.GA15930@peff.net>
Jeff King <peff@peff.net> writes:
Show 20 quoted lines
> +/*
> + * We anonymize each component of a path individually,
> + * so that paths a/b and a/c will share a common root.
> + * The paths are cached via anonymize_mem so that repeated
> + * lookups for "a" will yield the same value.
> + */
> +static void anonymize_path(struct strbuf *out, const char *path,
> + struct hashmap *map,
> + char *(*generate)(const char *, size_t *))
> +{
> + while (*path) {
> + const char *end_of_component = strchrnul(path, '/');
> + size_t len = end_of_component - path;
> + const char *c = anonymize_mem(map, generate, path, &len);
> + strbuf_add(out, c, len);
> + path = end_of_component;
> + if (*path)
> + strbuf_addch(out, *path++);
> + }
> +}Do two paths sort the same way before and after anonymisation? For example, if generate() works as a simple substitution, it should map a character that sorts before (or after) '/' with another that also sorts before (or after) '/' for us to be able to diagnose an error that comes from D/F sort order confusion.