From fa236ada0a9304f51ee214bd651e68c6e25ca5e8 Mon Sep 17 00:00:00 2001 From: Florian Heck <florian.heck@hotmail.de> Date: Fri, 28 Oct 2016 15:33:25 +0200 Subject: [PATCH] added ancestry check --- .../fim/seibt/gitwrapper/repo/Commit.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 a26c072..7c2ef1f 100644 --- a/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java +++ b/src/de/uni_passau/fim/seibt/gitwrapper/repo/Commit.java @@ -3,6 +3,7 @@ package de.uni_passau.fim.seibt.gitwrapper.repo; import java.time.Instant; import java.time.OffsetDateTime; import java.time.ZoneId; +import java.util.Optional; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -245,4 +246,17 @@ public class Commit extends Reference { } }); } + + /** + * Checks if the given {@link Commit} is an ancestor of this commit. + * + * @param ancestor + * the {@link Commit} to check + * @return optionally <code>true</code>, if the given commit is in the history before this commit, + * <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); + } } -- GitLab