From: Marco Costalba Date: Sun, 04 Jun 2006 09:54:25 GMT Subject: Re: Gitk feature - show nearby tags Message-ID: In-Reply-To: <7vodx9cm3g.fsf@assigned-by-dhcp.cox.net> On 6/4/06, Junio C Hamano wrote: > "Marco Costalba" writes: > > > As example given a selected revision with id is it possible to > > do something like this to fond the ancestor? > > > > 1) get the tag list with git-peek-remote or something similar if tags > > are not already loaded > > > > 2) given the tagList vector with n elements run > > > > git-rev-list --topo-order ^tagList[0] ^tagList[1] .... > > ^tagList[n-1] > > > > 3) take the last sha spit out by git-rev-list, be it . > > > > 4) Previous nearest tag is the parent of lastSha > > Sorry, I do not understand what you are doing here at all. > Suppose you have this simple history. > > (root) > > a---b---d---e---f---g > t1 \ / t3 > ---c > t2 > > and in (2) is "e". When tagList = (t1, t2, t3), the > above rev-list would return empty. This is enough! Empty list is an useful and enough information. It means: 1) Parent of current revision ("e" in our case) is a tag, indeed our seeked tag. 2) If previous point is not true then there are no previous tags. In a less corner case, just to better explaing my idea, consider this: a---b---d---e---f---g---h t1 \ / t3 ---c t2 Where our sha1 is still "e", in this case git-rev-list --topo-order ^a ^c ^g gives, as last revision in output list, "f" Then parentOf() is and our looked for tag is t3 Marco