On Fri, Dec 06, 2024 at 08:57:04PM +0900, Junio C Hamano wrote: > "Kristoffer Haugsbakk" <kristofferhaugsbakk@xxxxxxxxxxxx> writes: > > > On Fri, Dec 6, 2024, at 10:51, Patrick Steinhardt wrote: > >> It was reported > > > > It would be nice with a hyperlink since this email is not part of the > > email thread for the report. > > > > https://lore.kernel.org/git/Z1LJSADiStlFicTL@xxxxxx/T/#mae906ec74d5657e702165e29b90927f730280c29 > > > >> It was reported that magic pathspecs started to return results in > > > > I’m not used to this being called “magic pathspecs” as a user. > > gitglossary(7) talks about (magic) pathspecs as filepaths. > > Thanks for catching the mistaken phrasing. It would have caused > unnecessary confusion later to "git log" readers. > > The syntax to say that the following path is from the top-level of > the working tree even when you are running the command from a > subdirectory, e.g. > > cd Documentation > git log :/t > > is described in gitglossary(7): > > A pathspec that begins with a colon `:` has special meaning. In the > short form, the leading colon `:` is followed by zero or more "magic > signature" letters (which optionally is terminated by another colon `:`), > and the remainder is the pattern to match against the path. > The "magic signature" consists of ASCII symbols that are neither > alphanumeric, glob, regex special characters nor colon. > The optional colon that terminates the "magic signature" can be > omitted if the pattern begins with a character that does not belong to > "magic signature" symbol set and is not a colon. > > and even though the word "magic" signature is used, there is no > definition given for the entire construct, i.e. the pathspec that > uses a special meaning introduced by the use of "colon followed by > one or more magic signature letters". We probably should add a > sentence to officially define it, if only to reduce the need for > exchanges like this ;-) > > ... and is not a colon. Such a pathspec that uses these "magic" > meaning is called "magic pathspec". > > But more importantly, the syntax that triggered this topic in > > <CAKOEJdcPYn3O01p29rVa+xv=Qr504FQyKJeSB-Moze04ViCGGg@xxxxxxxxxxxxxx> > > is *NOT* a magic pathspec at all. It is a revision syntax to name > the first commit that is reachable from the current HEAD with a > commit log message, that matches the given patterh, i.e. > > git show ":/my message" > > which is a (rather lousy) short-hand for a more general > > git show "HEAD^{/my message}" > > i.e. <startingRev>^{/<pattern>}. There is no specific name for > this syntax. Hm, yeah. I think I read pathspec somewhere and just went with it without thinking. > I suspect that "filepath" you mentioned may be something some folks > (but not me or any other long timers) would call yet another syntax, > which is :<path>, that names the object sitting at <path> in the > index. Because ":/myMessage" look so similar to ":myFile", yet > they mean so different things, as I said, ":/myMessage" is a rather > lousy short-hand for the more general "^{/<pattern>}" suffix that > is less ambiguous. > > Patrick, let's not use a wrong word. This is not about pathspec at > all, and is a revision syntax. As there is no specific jargon for > the syntax, here is what I would write, if I were explaining the > problem being solved: > > Recently it was reported [*1*] that "look for the youngest > reachable commit with log message that match the given pattern" > syntax (e.g. :/myMessagePattern, or HEAD^{/myMessagePattern}) > started to show older commit. > > [Footnote] > *1* <CAKOEJdcPYn3O01p29rVa+xv=Qr504FQyKJeSB-Moze04ViCGGg@xxxxxxxxxxxxxx> Will update in v2. Thanks! Patrick