This operates on a single line and doesn't need any parser state.
go-gitdiff
A Go library for parsing and applying patches generated by git diff, git show, and git format-patch. It can also parse and apply unified diffs
generated by the standard diff tool.
Status
In development, most functionality is currently missing, incomplete, or broken.
Why another git/unified diff parser?
Several packages with similar functionality exist, so why did I write another?
-
No other packages I found support binary diffs, as generated with the
--binaryflag. This is the main reason for writing a new packages, as the format is pretty different from line-oriented diffs and is unique to Git. -
Most other packages only parse patches, so you need another package to apply them (and if they do support applies, it is only for text files.)
-
This package aims to accept anything that
git applyaccepts, and closely follows the logic inapply.c. -
It seemed like a fun thing to write and a good way to learn more about Git.