On Wed, Jan 1, 2025 at 9:01 AM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > "Elijah Newren via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > > > From: Elijah Newren <newren@xxxxxxxxx> > > > > Given a branch name of 'foo{bar', commands like > > > > git cat-file -p foo{bar:README.md > > > > should succeed (assuming that branch had a README.md file, of course). > > However, the change in cce91a2caef9 (Change 'master@noon' syntax to > > 'master@{noon}'., 2006-05-19) presumed that curly braces would always > > come after an '@' and be paired, causing 'foo{bar:README.md' to > > entirely miss the ':' and assume there's no object being referenced. > > In short, git would report: > > > > fatal: Not a valid object name foo{bar:README.md > > > > Change the parsing to only make the assumption of paired curly braces > > immediately after a '@' character appears. > > Interesting. I wonder if this looseness was to ensure that we won't > mistake a colon inside "master^{/title with : a colon}" as a start > of a subpath, instead of asking for a commit with a title that > happens to have a colon in it? Yeah, good catch, my changes would for example break parsing master^{/object-name:}:t/t1006-cat-file.sh I'll fix that and add a testcase.