Re: [PATCH 0/9] Extending the shelf life of "git describe" output
Junio C Hamano <gitster@pobox.com> writes:
> This series teaches the sha1_name machinery to only look for
> unambigous commit object names when the caller knows that the name
> must refer to a commit object.
Show 26 quoted lines
> - You will further be able to extend the lifetime of uniqueness of
> "git describe" output if you take advantage of the "tagname" or
> "number". The current parser does not do this.
>
> There are a number of ways to do this, but probably the cleanest
> would be to (you only can do this when you have "tagname" tag
> locally; you may not have it) pass the tag and the number down to
> the find_short_*() routines with commit_only set, and when they
> find a commit that match the prefix, inside is_commit_object()
> test, check also that the commit reaches the given tag object in
> the given number steps (otherwise discard it as it is not the one
> you are looking for).
>
> - Some callers that are involved in the get_sha1_1() callpath know
> that the name they have must be referring to commit objects (e.g.
> get_parent() and get_nth_ancestor()). It might be worthwhile to
> let get_sha1_1() know that the caller knows the name it is
> feeding must refer to a commit object, and have the uniqueness
> logic take advantage of it.
>
> I think that most of these callers are expecting to parse a
> committish and the user may have given them the name of a a tag
> object that peels to a commit, so you would need to add a new
> GET_SHORT_COMMITTISH that allows any committish, in addition to
> the GET_SHORT_COMMIT_ONLY this series adds, if you want to do
> this.
Two random thoughts:
* The commit_only flag is only one thing you may "know" about the
parsing, as you state above. E.g., we may know the distance from a
certain tag. Given this, wouldn't it be cleaner to patch a struct
things_we_know into the call chain instead of only a flag?
* The treeish:path syntax also "knows" that the left side must be or
peel to a tree, so it makes no sense to go looking for a blob.
--
Thomas Rast
trast@{inf,student}.ethz.ch