Merge branch 'stable-5.1' into stable-5.2
* stable-5.1: BasePackConnection: Check for expected length of ref advertisement TransferConfig: Make constructors public Change-Id: I2480a0455250ee381fae93cac2db30f8305fa6aa Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
commit
3cb80a433d
|
@ -390,6 +390,7 @@ invalidPathPeriodAtEndWindows=Invalid path (period at end is ignored by Windows)
|
||||||
invalidPathSpaceAtEndWindows=Invalid path (space at end is ignored by Windows): {0}
|
invalidPathSpaceAtEndWindows=Invalid path (space at end is ignored by Windows): {0}
|
||||||
invalidPathReservedOnWindows=Invalid path (''{0}'' is reserved on Windows): {1}
|
invalidPathReservedOnWindows=Invalid path (''{0}'' is reserved on Windows): {1}
|
||||||
invalidRedirectLocation=Invalid redirect location {0} -> {1}
|
invalidRedirectLocation=Invalid redirect location {0} -> {1}
|
||||||
|
invalidRefAdvertisementLine=Invalid ref advertisement line: ''{1}''
|
||||||
invalidReflogRevision=Invalid reflog revision: {0}
|
invalidReflogRevision=Invalid reflog revision: {0}
|
||||||
invalidRefName=Invalid ref name: {0}
|
invalidRefName=Invalid ref name: {0}
|
||||||
invalidReftableBlock=Invalid reftable block
|
invalidReftableBlock=Invalid reftable block
|
||||||
|
|
|
@ -451,6 +451,7 @@ public static JGitText get() {
|
||||||
/***/ public String invalidPathSpaceAtEndWindows;
|
/***/ public String invalidPathSpaceAtEndWindows;
|
||||||
/***/ public String invalidPathReservedOnWindows;
|
/***/ public String invalidPathReservedOnWindows;
|
||||||
/***/ public String invalidRedirectLocation;
|
/***/ public String invalidRedirectLocation;
|
||||||
|
/***/ public String invalidRefAdvertisementLine;
|
||||||
/***/ public String invalidReflogRevision;
|
/***/ public String invalidReflogRevision;
|
||||||
/***/ public String invalidRefName;
|
/***/ public String invalidRefName;
|
||||||
/***/ public String invalidReftableBlock;
|
/***/ public String invalidReftableBlock;
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.eclipse.jgit.errors.InvalidObjectIdException;
|
||||||
import org.eclipse.jgit.errors.NoRemoteRepositoryException;
|
import org.eclipse.jgit.errors.NoRemoteRepositoryException;
|
||||||
import org.eclipse.jgit.errors.PackProtocolException;
|
import org.eclipse.jgit.errors.PackProtocolException;
|
||||||
import org.eclipse.jgit.errors.RemoteRepositoryException;
|
import org.eclipse.jgit.errors.RemoteRepositoryException;
|
||||||
|
@ -222,6 +223,10 @@ private void readAdvertisedRefsImpl() throws IOException {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Expecting to get a line in the form "sha1 refname"
|
||||||
|
if (line.length() < 41 || line.charAt(40) != ' ') {
|
||||||
|
throw invalidRefAdvertisementLine(line);
|
||||||
|
}
|
||||||
String name = line.substring(41, line.length());
|
String name = line.substring(41, line.length());
|
||||||
if (avail.isEmpty() && name.equals("capabilities^{}")) { //$NON-NLS-1$
|
if (avail.isEmpty() && name.equals("capabilities^{}")) { //$NON-NLS-1$
|
||||||
// special line from git-receive-pack to show
|
// special line from git-receive-pack to show
|
||||||
|
@ -229,7 +234,12 @@ private void readAdvertisedRefsImpl() throws IOException {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
final ObjectId id = ObjectId.fromString(line.substring(0, 40));
|
final ObjectId id;
|
||||||
|
try {
|
||||||
|
id = ObjectId.fromString(line.substring(0, 40));
|
||||||
|
} catch (InvalidObjectIdException e) {
|
||||||
|
throw invalidRefAdvertisementLine(line);
|
||||||
|
}
|
||||||
if (name.equals(".have")) { //$NON-NLS-1$
|
if (name.equals(".have")) { //$NON-NLS-1$
|
||||||
additionalHaves.add(id);
|
additionalHaves.add(id);
|
||||||
} else if (name.endsWith("^{}")) { //$NON-NLS-1$
|
} else if (name.endsWith("^{}")) { //$NON-NLS-1$
|
||||||
|
@ -318,6 +328,10 @@ private PackProtocolException duplicateAdvertisement(String name) {
|
||||||
return new PackProtocolException(uri, MessageFormat.format(JGitText.get().duplicateAdvertisementsOf, name));
|
return new PackProtocolException(uri, MessageFormat.format(JGitText.get().duplicateAdvertisementsOf, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private PackProtocolException invalidRefAdvertisementLine(String line) {
|
||||||
|
return new PackProtocolException(uri, MessageFormat.format(JGitText.get().invalidRefAdvertisementLine, line));
|
||||||
|
}
|
||||||
|
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
|
|
|
@ -134,12 +134,31 @@ static ProtocolVersion parse(@Nullable String name) {
|
||||||
final @Nullable ProtocolVersion protocolVersion;
|
final @Nullable ProtocolVersion protocolVersion;
|
||||||
final String[] hideRefs;
|
final String[] hideRefs;
|
||||||
|
|
||||||
TransferConfig(Repository db) {
|
/**
|
||||||
|
* Create a configuration honoring the repository's settings.
|
||||||
|
*
|
||||||
|
* @param db
|
||||||
|
* the repository to read settings from. The repository is not
|
||||||
|
* retained by the new configuration, instead its settings are
|
||||||
|
* copied during the constructor.
|
||||||
|
* @since 5.1.4
|
||||||
|
*/
|
||||||
|
public TransferConfig(Repository db) {
|
||||||
this(db.getConfig());
|
this(db.getConfig());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a configuration honoring settings in a
|
||||||
|
* {@link org.eclipse.jgit.lib.Config}.
|
||||||
|
*
|
||||||
|
* @param rc
|
||||||
|
* the source to read settings from. The source is not retained
|
||||||
|
* by the new configuration, instead its settings are copied
|
||||||
|
* during the constructor.
|
||||||
|
* @since 5.1.4
|
||||||
|
*/
|
||||||
@SuppressWarnings("nls")
|
@SuppressWarnings("nls")
|
||||||
TransferConfig(Config rc) {
|
public TransferConfig(Config rc) {
|
||||||
boolean fsck = rc.getBoolean("transfer", "fsckobjects", false);
|
boolean fsck = rc.getBoolean("transfer", "fsckobjects", false);
|
||||||
fetchFsck = rc.getBoolean("fetch", "fsckobjects", fsck);
|
fetchFsck = rc.getBoolean("fetch", "fsckobjects", fsck);
|
||||||
receiveFsck = rc.getBoolean("receive", "fsckobjects", fsck);
|
receiveFsck = rc.getBoolean("receive", "fsckobjects", fsck);
|
||||||
|
|
Loading…
Reference in New Issue