Re: [PATCH] object-name: fix reversed ordering with magic pathspecs
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 6, 2024, 12:05 UTC
- Message-ID
- <Z1LohIVUyAOJvjW7@pks.im>
- In-Reply-To
- <xmqqcyi5vxbj.fsf@gitster.g>
On Fri, Dec 06, 2024 at 08:57:04PM +0900, Junio C Hamano wrote:
Show 63 quoted lines
> "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> 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@pks.im/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@mail.gmail.com>
>
> 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.
Show 20 quoted lines
> 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@mail.gmail.com>Will update in v2. Thanks!
Patrick