Hacker News new | ask | show | jobs
by chiefalchemist 954 days ago
How can this be uses with PHP?
2 comments

According to `man gitattributes` [1] a `*.php diff=php` should be enough.

[1] https://git-scm.com/docs/gitattributes

It's just a regex to match the line you want to see the history of. Function would be a common case, but it's completely arbitrary.

For example, `git log -L:members:Cargo.toml` will show the history of constituent rust projects in a Cargo workspace.

It's a regex? Is it even guaranteed to work then? I would think you have to parse non-regular languages to always find the end of a function in a some languages?

Indeed, it does not always work correctly for Julia, as an arbitrary example I tried. Seems like it goes by indentation? Still nice though and worked out of the box!

There's a comment about that here: https://github.com/git/git/blob/bc5204569f7db44d22477485afd5...

    When writing or updating patterns, assume that the contents these
    patterns are applied to are syntactically correct.  The patterns
    can be simple without implementing all syntactical corner cases, as
    long as they are sufficiently permissive.
Wow, that file must be paradise for regex nerds, assuming there are any such...
there are, I am, and it's not (sorry). some languages have the ability to comment regexes, and that would be very useful here.
It has lots of comments inside the regexes. How would this better comment support look like?
there are, I am, and it is. (Except for the proliferation of backslashes due to C not having "raw" strings.)
It's just to match the (starting) line. I assume the +n context uses the same method diffs do anywhere else, however that works (and sometimes doesn't).