Thread (1 message) 1 message, 1 author, 2024-02-26

Re: [Question] How to parse range-diff output

From: Junio C Hamano <hidden>
Date: 2024-02-26 16:16:42

"Kristoffer Haugsbakk" [off-list ref] writes:
On Mon, Feb 26, 2024, at 08:25, ZheNing Hu wrote:
quoted
Hi,

I am currently looking to implement a service that provides a version
range comparison based on git range-diff. I can easily parse out
commit pair headers like "3: 0bf6289 ! 3: a076e88 dev5," but I am
unsure how to parse the details in the subsequent diff patch body.

It is not a standard diff output where one can parse out the filename
from the diff header, It should be called a diff of diffs. We can see
various headers with file names such as "@@ File1 (new)", "## File2
(new) ##", or "@@ File3: function3" in different formats. This is
confusing. How should we correctly parse a range-diff patch, and do
you have any good suggestions?

Thanks for any help.
--
ZheNing Hu
Hi

Note that “Output Stability” says that this output is not meant to be
machine-readable. It’s for human consumption. It’s not textually stable.

So a new version of Git might break your implementation without warning.
Good point.

In fact, those "##" things came long after the command was
introduced for exactly the purpose of helping human users to locate
which part of a "diff" the "diff of diff" is talking about, and the
output from the command has been unstable for the exact reason.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help