From ea197eb9e065ecc9de01f6effeffec775831cf8c Mon Sep 17 00:00:00 2001
From: Georg Seibt <seibt@fim.uni-passau.de>
Date: Mon, 31 Oct 2016 13:13:37 +0100
Subject: [PATCH] add a warning in case of failure to the checkAncestry(...)
 method

---
 .../fim/seibt/gitwrapper/repo/Commit.java     | 23 +++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

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 6848dd0..cba3eca 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);
     }
 
     /**
-- 
GitLab