@ -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 ;
}
}