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 HuHi 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.