]> source.dussan.org Git - jgit.git/commitdiff
Enhance BranchConfig API to expose branch.* options 15/30915/2
authorRobin Stocker <robin@nibor.org>
Sat, 2 Aug 2014 09:20:51 +0000 (19:20 +1000)
committerMatthias Sohn <matthias.sohn@sap.com>
Sat, 2 Aug 2014 22:06:14 +0000 (00:06 +0200)
With these, more code can use BranchConfig instead of directly accessing
the raw configuration values.

Change-Id: I4b52f97ff0e3fc8f097512806f043c615a3d2594
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit/src/org/eclipse/jgit/lib/BranchConfig.java

index 2c51931ff6ac825631ae608b89d9cf99161ff8dd..3a2c54485d0c820eb83df8debacbbcb556548e79 100644 (file)
@@ -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;
        }
 }