git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 0/9] Extending the shelf life of "git describe" output

From
Thomas Rast <trast@student.ethz.ch>
Date
Jun 19, 2012, 07:14 UTC
Message-ID
<877gv34vtg.fsf@thomas.inf.ethz.ch>
In-Reply-To
<1340057139-8311-1-git-send-email-gitster@pobox.com>
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
Previous: Junio C HamanoNext: Junio C Hamano
Message 12 of 14 in “Extending the shelf life of "git describe" output”
  1. 0/9 Extending the shelf life of "git describe" outputJunio C Hamano, Jun 18, 2012
  2. 1/9 sha1_name.c: indentation fixJunio C Hamano, Jun 18, 2012
  3. 2/9 sha1_name.c: clarify what "fake" is for in find_short_object_filename()Junio C Hamano, Jun 18, 2012
  4. 3/9 sha1_name.c: rename "now" to "current"Junio C Hamano, Jun 18, 2012
  5. 4/9 sha1_name.c: refactor find_short_packed_object()Junio C Hamano, Jun 18, 2012
  6. 5/9 sha1_name.c: teach find_short_object_filename() a commit-only optionJunio C Hamano, Jun 18, 2012
  7. 5/9 sha1_name.c: teach find_short_object_filename() a commit-only optionJunio C Hamano, Jun 18, 2012
  8. 6/9 sha1_name.c: teach find_short_packed_object() a commit-only optionJunio C Hamano, Jun 18, 2012
  9. 7/9 sha1_name.c: allow get_short_sha1() to take other flagsJunio C Hamano, Jun 18, 2012
  10. 8/9 sha1_name.c: teach get_short_sha1() a commit-only optionJunio C Hamano, Jun 18, 2012
  11. 9/9 sha1_name.c: get_describe_name() by definition groks only commitsJunio C Hamano, Jun 18, 2012
  12. Thomas RastJun 19, 2012
  13. Junio C HamanoJun 19, 2012
  14. Thomas RastJun 20, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.