@ -181,16 +181,10 @@ public class PullCommand extends GitCommand<PullResult> {
String remoteBranchName = repoConfig . getString (
ConfigConstants . CONFIG_BRANCH_SECTION , branchName ,
ConfigConstants . CONFIG_KEY_MERGE ) ;
boolean doRebase = false ;
if ( remoteBranchName = = null ) {
// check if the branch is configured for pull-rebase
remoteBranchNam e = repoConfig . getString (
boolean doRebase = repoConfig . getBoolean (
ConfigConstants . CONFIG_BRANCH_SECTION , branchName ,
ConfigConstants . CONFIG_KEY_REBASE ) ;
if ( remoteBranchName ! = null ) {
doRebase = true ;
}
}
ConfigConstants . CONFIG_KEY_REBASE , false ) ;
if ( remoteBranchName = = null ) {
String missingKey = ConfigConstants . CONFIG_BRANCH_SECTION + DOT
@ -237,29 +231,10 @@ public class PullCommand extends GitCommand<PullResult> {
JGitText . get ( ) . operationCanceled ,
JGitText . get ( ) . pullTaskName ) ) ;
PullResult result ;
if ( doRebase ) {
RebaseCommand rebase = new RebaseCommand ( repo ) ;
try {
RebaseResult rebaseRes = rebase . setUpstream ( remoteBranchName )
. setProgressMonitor ( monitor ) . setOperation (
Operation . BEGIN ) . call ( ) ;
result = new PullResult ( fetchRes , remote , rebaseRes ) ;
} catch ( NoHeadException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( RefNotFoundException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( JGitInternalException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( GitAPIException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
}
} else {
// we check the updates to see which of the updated branches
// corresponds
// to the remote branch name
AnyObjectId commitToMerge ;
if ( isRemote ) {
Ref r = null ;
if ( fetchRes ! = null ) {
@ -269,9 +244,8 @@ public class PullCommand extends GitCommand<PullResult> {
+ remoteBranchName ) ;
}
if ( r = = null )
throw new JGitInternalException ( MessageFormat . format (
JGitText . get ( ) . couldNotGetAdvertisedRef ,
remoteBranchName ) ) ;
throw new JGitInternalException ( MessageFormat . format ( JGitText
. get ( ) . couldNotGetAdvertisedRef , remoteBranchName ) ) ;
else
commitToMerge = r . getObjectId ( ) ;
} else {
@ -283,6 +257,25 @@ public class PullCommand extends GitCommand<PullResult> {
e ) ;
}
}
PullResult result ;
if ( doRebase ) {
RebaseCommand rebase = new RebaseCommand ( repo ) ;
try {
RebaseResult rebaseRes = rebase . setUpstream ( commitToMerge )
. setProgressMonitor ( monitor ) . setOperation (
Operation . BEGIN ) . call ( ) ;
result = new PullResult ( fetchRes , remote , rebaseRes ) ;
} catch ( NoHeadException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( RefNotFoundException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( JGitInternalException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
} catch ( GitAPIException e ) {
throw new JGitInternalException ( e . getMessage ( ) , e ) ;
}
} else {
MergeCommand merge = new MergeCommand ( repo ) ;
merge . include (
"branch \'" + remoteBranchName + "\' of " + remoteUri ,