Re: [PATCH v2 2/5] sha1_file.c: make pack-name helper globally accessible
- From
Ramsay Jones <ramsay@ramsayjones.plus.com>
- Date
- Mar 16, 2017, 17:03 UTC
- Message-ID
- <fefb69e1-325d-5ec6-0954-1445ce8ad9be@ramsayjones.plus.com>
- In-Reply-To
- <20170316143152.gdeaprlsercvwmiw@sigill.intra.peff.net>
On 16/03/17 14:31, Jeff King wrote:
Show 31 quoted lines
> On Thu, Mar 16, 2017 at 10:27:06AM -0400, Jeff King wrote:
>
>> -/*
>> - * Return the name of the pack or index file with the specified sha1
>> - * in its filename. *base and *name are scratch space that must be
>> - * provided by the caller. which should be "pack" or "idx".
>> - */
>> -static char *sha1_get_pack_name(const unsigned char *sha1,
>> - struct strbuf *buf,
>> - const char *which)
>> + char *odb_pack_name(struct strbuf *buf,
>> + const unsigned char *sha1,
>> + const char *ext)
>> {
>> strbuf_reset(buf);
>> strbuf_addf(buf, "%s/pack/pack-%s.%s", get_object_directory(),
>> - sha1_to_hex(sha1), which);
>> + sha1_to_hex(sha1), ext);
>> return buf->buf;
>> }
>
> Incidentally, this entire function could be implemented as:
>
> return git_path_buf(buf, "objects/pack/pack-%s.%s",
> sha1_to_hex(sha1), ext);
>
> as the git_path() functions are smart enough to replace "objects/" with
> the true object directory when necessary. I don't know if people find
> that more or less readable. Since it's buried in a helper function, I
> doubt it matters much either way. The git_path functions do also do some
> path normalization, which might be of value.Hmm, I don't have strong feelings either way.
However, I note that the only normalization going on (that I can see) is to remove .//* from the beginning of the resulting string. I don't know why, but I guess it is to cater to people using the various GIT_ environment variables doing things like:
$ GIT_OBJECT_DIRECTORY=./my-objects git ....
It has always puzzled me slightly, why the git_path functions do this normalization, but (for example) setup_git_env(), git_path_from_env(), get_common_dir(), ... don't! ;-)
ATB, Ramsay Jones