diff --git a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java index 6848dd020ec7d8dbcc0c2d6d3de3f9faca674337..cba3eca21820a2cd66db8242e1dc02c0a0348522 100644 --- a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java +++ b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java @@ -4,10 +4,15 @@ import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneId; import java.util.Optional; +import java.util.function.Function; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; +import de.uni_passau.fim.seibt.gitwrapper.process.ProcessExecutor; +import de.uni_passau.fim.seibt.gitwrapper.process.ProcessExecutor.ExecRes; +import de.uni_passau.fim.seibt.gitwrapper.process.ToolWrapper; + /** * A {@link Commit} made in a {@link Repository}. */ @@ -52,8 +57,22 @@ public class Commit extends Reference { * <code>false</code>, if not and an {@link Optional#EMPTY empty optional}, if an error occurred. */ public Optional<Boolean> checkAncestry(Commit ancestor) { - return git.exec(repo.getDir(), " merge-base", "--is-ancestor", ancestor.getId(), id).map(execRes -> - execRes.exitCode == 0 ? Boolean.TRUE : execRes.exitCode == 1 ? Boolean.FALSE : null); + Optional<ExecRes> res = git.exec(repo.getDir(), "merge-base", "--is-ancestor", ancestor.getId(), id); + Function<ExecRes, Boolean> toBoolean = execRes -> { + + if (execRes.exitCode == 0) { + return Boolean.TRUE; + } + + if (execRes.exitCode == 1) { + return Boolean.FALSE; + } + + LOG.warning(() -> "Failed to determine whether '" + ancestor + "' is an ancestor of '" + this + "'."); + return null; + }; + + return res.map(toBoolean); } /**