"Kristoffer Haugsbakk" <code@xxxxxxxxxxxxxxx> writes: > On Mon, Feb 26, 2024, at 08:25, ZheNing Hu wrote: >> 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.