From 93530625cf26e9a06f976e1575269becdcbee283 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Sat, 2 Aug 2014 19:20:51 +1000 Subject: [PATCH] Enhance BranchConfig API to expose branch.* options With these, more code can use BranchConfig instead of directly accessing the raw configuration values. Change-Id: I4b52f97ff0e3fc8f097512806f043c615a3d2594 Signed-off-by: Matthias Sohn --- .../org/eclipse/jgit/lib/BranchConfig.java | 65 ++++++++++++++----- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchConfig.java index 2c51931ff6..3a2c54485d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchConfig.java @@ -54,6 +54,14 @@ import org.eclipse.jgit.transport.RemoteConfig; */ public class BranchConfig { + /** + * The value that means "local repository" for {@link #getRemote()}: + * {@value} + * + * @since 3.5 + */ + public static final String LOCAL_REPOSITORY = "."; //$NON-NLS-1$ + private final Config config; private final String branchName; @@ -76,12 +84,12 @@ public class BranchConfig { * not be determined */ public String getTrackingBranch() { - String remote = getRemote(); - String mergeRef = getMergeBranch(); + String remote = getRemoteOrDefault(); + String mergeRef = getMerge(); if (remote == null || mergeRef == null) return null; - if (remote.equals(".")) //$NON-NLS-1$ + if (isRemoteLocal()) return mergeRef; return findRemoteTrackingBranch(remote, mergeRef); @@ -93,14 +101,44 @@ public class BranchConfig { * {@link #getTrackingBranch()} instead. */ public String getRemoteTrackingBranch() { - String remote = getRemote(); - String mergeRef = getMergeBranch(); + String remote = getRemoteOrDefault(); + String mergeRef = getMerge(); if (remote == null || mergeRef == null) return null; return findRemoteTrackingBranch(remote, mergeRef); } + /** + * @return {@code true} if the "remote" setting points to the local + * repository (with {@value #LOCAL_REPOSITORY}), false otherwise + * @since 3.5 + */ + public boolean isRemoteLocal() { + return LOCAL_REPOSITORY.equals(getRemote()); + } + + /** + * @return the remote this branch is configured to fetch from/push to, or + * {@code null} if not defined + * @since 3.5 + */ + public String getRemote() { + return config.getString(ConfigConstants.CONFIG_BRANCH_SECTION, + branchName, ConfigConstants.CONFIG_KEY_REMOTE); + } + + /** + * @return the name of the upstream branch as it is called on the remote, or + * {@code null} if not defined + * @since 3.5 + */ + public String getMerge() { + return config.getString( + ConfigConstants.CONFIG_BRANCH_SECTION, branchName, + ConfigConstants.CONFIG_KEY_MERGE); + } + /** * Finds the tracked remote tracking branch * @@ -127,20 +165,11 @@ public class BranchConfig { return null; } - private String getRemote() { - String remoteName = config.getString( - ConfigConstants.CONFIG_BRANCH_SECTION, branchName, - ConfigConstants.CONFIG_KEY_REMOTE); - if (remoteName == null) + private String getRemoteOrDefault() { + String remote = getRemote(); + if (remote == null) return Constants.DEFAULT_REMOTE_NAME; else - return remoteName; - } - - private String getMergeBranch() { - String mergeRef = config.getString( - ConfigConstants.CONFIG_BRANCH_SECTION, branchName, - ConfigConstants.CONFIG_KEY_MERGE); - return mergeRef; + return remote; } } -- 2.39.5