Thread (1 message) 1 message, 1 author, 2016-06-15

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

From: Thomas Rast <hidden>
Date: 2016-06-15 22:54:08

Junio C Hamano [off-list ref] 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.
[...]
 - 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help