- throw an API exception instead of an internal exception to allow applications to handle this problem - improve error message to give hints about possible root causes Bug: 464660 Change-Id: Ib7d18bb2eeeac0fc218daea375b290ea5034bda1 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v4.0.0.201506020755-rc3
@@ -181,7 +181,7 @@ corruptObjectTruncatedInObjectId=truncated in object id | |||
couldNotCheckOutBecauseOfConflicts=Could not check out because of conflicts | |||
couldNotDeleteLockFileShouldNotHappen=Could not delete lock file. Should not happen | |||
couldNotDeleteTemporaryIndexFileShouldNotHappen=Could not delete temporary index file. Should not happen | |||
couldNotGetAdvertisedRef=Could not get advertised Ref for branch {0} | |||
couldNotGetAdvertisedRef=Remote {0} did not advertise Ref for branch {1}. This Ref may not exist in the remote or may be hidden by permission settings. | |||
couldNotGetRepoStatistics=Could not get repository statistics | |||
couldNotLockHEAD=Could not lock HEAD | |||
couldNotReadIndexInOneGo=Could not read index in one go, only {0} out of {1} read |
@@ -54,6 +54,7 @@ import org.eclipse.jgit.api.errors.InvalidConfigurationException; | |||
import org.eclipse.jgit.api.errors.InvalidRemoteException; | |||
import org.eclipse.jgit.api.errors.JGitInternalException; | |||
import org.eclipse.jgit.api.errors.NoHeadException; | |||
import org.eclipse.jgit.api.errors.RefNotAdvertisedException; | |||
import org.eclipse.jgit.api.errors.RefNotFoundException; | |||
import org.eclipse.jgit.api.errors.WrongRepositoryStateException; | |||
import org.eclipse.jgit.internal.JGitText; | |||
@@ -171,6 +172,7 @@ public class PullCommand extends TransportCommand<PullCommand, PullResult> { | |||
* @throws InvalidRemoteException | |||
* @throws CanceledException | |||
* @throws RefNotFoundException | |||
* @throws RefNotAdvertisedException | |||
* @throws NoHeadException | |||
* @throws org.eclipse.jgit.api.errors.TransportException | |||
* @throws GitAPIException | |||
@@ -178,7 +180,7 @@ public class PullCommand extends TransportCommand<PullCommand, PullResult> { | |||
public PullResult call() throws GitAPIException, | |||
WrongRepositoryStateException, InvalidConfigurationException, | |||
DetachedHeadException, InvalidRemoteException, CanceledException, | |||
RefNotFoundException, NoHeadException, | |||
RefNotFoundException, RefNotAdvertisedException, NoHeadException, | |||
org.eclipse.jgit.api.errors.TransportException { | |||
checkCallable(); | |||
@@ -284,11 +286,13 @@ public class PullCommand extends TransportCommand<PullCommand, PullResult> { | |||
r = fetchRes.getAdvertisedRef(Constants.R_HEADS | |||
+ remoteBranchName); | |||
} | |||
if (r == null) | |||
throw new JGitInternalException(MessageFormat.format(JGitText | |||
.get().couldNotGetAdvertisedRef, remoteBranchName)); | |||
else | |||
if (r == null) { | |||
throw new RefNotAdvertisedException(MessageFormat.format( | |||
JGitText.get().couldNotGetAdvertisedRef, remote, | |||
remoteBranchName)); | |||
} else { | |||
commitToMerge = r.getObjectId(); | |||
} | |||
} else { | |||
try { | |||
commitToMerge = repo.resolve(remoteBranchName); |
@@ -0,0 +1,54 @@ | |||
/* | |||
* Copyright (C) 2015,Matthias Sohn <matthias.sohn@sap.com> and | |||
* other copyright owners as documented in the project's IP log. | |||
* | |||
* This program and the accompanying materials are made available under the | |||
* terms of the Eclipse Distribution License v1.0 which accompanies this | |||
* distribution, is reproduced below, and is available at | |||
* http://www.eclipse.org/org/documents/edl-v10.php | |||
* | |||
* All rights reserved. | |||
* | |||
* Redistribution and use in source and binary forms, with or without | |||
* modification, are permitted provided that the following conditions are met: | |||
* | |||
* - Redistributions of source code must retain the above copyright notice, this | |||
* list of conditions and the following disclaimer. | |||
* | |||
* - Redistributions in binary form must reproduce the above copyright notice, | |||
* this list of conditions and the following disclaimer in the documentation | |||
* and/or other materials provided with the distribution. | |||
* | |||
* - Neither the name of the Eclipse Foundation, Inc. nor the names of its | |||
* contributors may be used to endorse or promote products derived from this | |||
* software without specific prior written permission. | |||
* | |||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |||
* POSSIBILITY OF SUCH DAMAGE. | |||
*/ | |||
package org.eclipse.jgit.api.errors; | |||
/** | |||
* Thrown when a ref is not found in advertised refs | |||
* | |||
* @since 4.0 | |||
*/ | |||
public class RefNotAdvertisedException extends GitAPIException { | |||
private static final long serialVersionUID = 1L; | |||
/** | |||
* @param message | |||
*/ | |||
public RefNotAdvertisedException(String message) { | |||
super(message); | |||
} | |||
} |