If a patch is malformed or a File is created directly, various fields may disagree. Add a validate function that checks for these types of issues so clients (e.g. appliers) can rely on the content of the fields.
Some of the issues to check:
IsRename is true/false but OldName and NewName are equal/not equal
IsDelete or IsNew is true but there is more than one fragment
IsDelete is true but the single fragment has context or addition lines or NewPosition and NewLines are not 0
IsNew is true but the single fragment has context or deletion lines or OldPosition and OldLines are not 0
IsBinary is true but TextFragments is not empty
If a patch is malformed or a
Fileis created directly, various fields may disagree. Add a validate function that checks for these types of issues so clients (e.g. appliers) can rely on the content of the fields.Some of the issues to check:
IsRenameis true/false butOldNameandNewNameare equal/not equalIsDeleteorIsNewis true but there is more than one fragmentIsDeleteis true but the single fragment has context or addition lines orNewPositionandNewLinesare not 0IsNewis true but the single fragment has context or deletion lines orOldPositionandOldLinesare not 0IsBinaryis true butTextFragmentsis not empty