Skip to content

Make conflicts detectable with errors.Is#165

Open
ian-oneleet wants to merge 1 commit into
bluekeyes:masterfrom
ian-oneleet:conflict-sentinel-errors
Open

Make conflicts detectable with errors.Is#165
ian-oneleet wants to merge 1 commit into
bluekeyes:masterfrom
ian-oneleet:conflict-sentinel-errors

Conversation

@ian-oneleet

Copy link
Copy Markdown

Currently, if there are file-level conflicts that prevent applying a patch, the caller only gets back an anonymous error, so they can't detect whether Apply failed due to a conflict or for some other reason.

This PR changes the error paths for file-level conflicts to return global sentinel errors, and also wraps content-level conflict errors (gitdiff.Conflict) in a sentinel error. With these changes, callers can detect conflicts like so:

		_, err = applier.Apply(ctx, f)
		if err != nil {
			if errors.Is(err, patch2pr.ErrConflict) {
				// there's a conflict
			}
			// something else went wrong
		}

Not too attached to the exact implementation (message wording, error structure, …). Let me know if any of that should change, or feel free to push commits.

Thanks for making this library available!

@bluekeyes

Copy link
Copy Markdown
Owner

Thanks, I think it makes sense to expose this information for callers, but I need to think some about the best structure for doing so. I'll let you know if I want to make any adjustments to what you have here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants