Browse Source

Merge branch 'stable-5.1' into stable-5.2

* stable-5.1:
  Replace usage of ArrayIndexOutOfBoundsException in treewalk
  Add config constants for WindowCache configuration options

Change-Id: I17da3c5183eca536aa2be3972bc5df45c9d75f1b
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v5.3.7.202002110540-r
David Pursehouse 4 years ago
parent
commit
0d962eaa78

+ 24
- 0
org.eclipse.jgit/.settings/.api_filters View File

<message_argument value="CONFIG_JMX_SECTION"/> <message_argument value="CONFIG_JMX_SECTION"/>
</message_arguments> </message_arguments>
</filter> </filter>
<filter id="1142947843">
<message_arguments>
<message_argument value="5.1.13"/>
<message_argument value="CONFIG_KEY_PACKED_GIT_LIMIT"/>
</message_arguments>
</filter>
<filter id="1142947843">
<message_arguments>
<message_argument value="5.1.13"/>
<message_argument value="CONFIG_KEY_PACKED_GIT_MMAP"/>
</message_arguments>
</filter>
<filter id="1142947843">
<message_arguments>
<message_argument value="5.1.13"/>
<message_argument value="CONFIG_KEY_PACKED_GIT_OPENFILES"/>
</message_arguments>
</filter>
<filter id="1142947843">
<message_arguments>
<message_argument value="5.1.13"/>
<message_argument value="CONFIG_KEY_PACKED_GIT_WINDOWSIZE"/>
</message_arguments>
</filter>
<filter id="1142947843"> <filter id="1142947843">
<message_arguments> <message_arguments>
<message_argument value="5.1.9"/> <message_argument value="5.1.9"/>

+ 24
- 0
org.eclipse.jgit/src/org/eclipse/jgit/lib/ConfigConstants.java View File

/** The "streamFileThreshold" key */ /** The "streamFileThreshold" key */
public static final String CONFIG_KEY_STREAM_FILE_TRESHOLD = "streamFileThreshold"; public static final String CONFIG_KEY_STREAM_FILE_TRESHOLD = "streamFileThreshold";


/**
* The "packedGitMmap" key
* @since 5.1.13
*/
public static final String CONFIG_KEY_PACKED_GIT_MMAP = "packedgitmmap";

/**
* The "packedGitWindowSize" key
* @since 5.1.13
*/
public static final String CONFIG_KEY_PACKED_GIT_WINDOWSIZE = "packedgitwindowsize";

/**
* The "packedGitLimit" key
* @since 5.1.13
*/
public static final String CONFIG_KEY_PACKED_GIT_LIMIT = "packedgitlimit";

/**
* The "packedGitOpenFiles" key
* @since 5.1.13
*/
public static final String CONFIG_KEY_PACKED_GIT_OPENFILES = "packedgitopenfiles";

/** The "remote" key */ /** The "remote" key */
public static final String CONFIG_KEY_REMOTE = "remote"; public static final String CONFIG_KEY_REMOTE = "remote";



+ 20
- 12
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/WindowCacheConfig.java View File



package org.eclipse.jgit.storage.file; package org.eclipse.jgit.storage.file;


import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_CORE_SECTION;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_DELTA_BASE_CACHE_LIMIT;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_LIMIT;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_MMAP;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_OPENFILES;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_PACKED_GIT_WINDOWSIZE;
import static org.eclipse.jgit.lib.ConfigConstants.CONFIG_KEY_STREAM_FILE_TRESHOLD;

import org.eclipse.jgit.internal.storage.file.WindowCache; import org.eclipse.jgit.internal.storage.file.WindowCache;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.storage.pack.PackConfig; import org.eclipse.jgit.storage.pack.PackConfig;
* @since 3.0 * @since 3.0
*/ */
public WindowCacheConfig fromConfig(Config rc) { public WindowCacheConfig fromConfig(Config rc) {
setPackedGitOpenFiles(rc.getInt(
"core", null, "packedgitopenfiles", getPackedGitOpenFiles())); //$NON-NLS-1$ //$NON-NLS-2$
setPackedGitLimit(rc.getLong(
"core", null, "packedgitlimit", getPackedGitLimit())); //$NON-NLS-1$ //$NON-NLS-2$
setPackedGitWindowSize(rc.getInt(
"core", null, "packedgitwindowsize", getPackedGitWindowSize())); //$NON-NLS-1$ //$NON-NLS-2$
setPackedGitMMAP(rc.getBoolean(
"core", null, "packedgitmmap", isPackedGitMMAP())); //$NON-NLS-1$ //$NON-NLS-2$
setDeltaBaseCacheLimit(rc.getInt(
"core", null, "deltabasecachelimit", getDeltaBaseCacheLimit())); //$NON-NLS-1$ //$NON-NLS-2$
setPackedGitOpenFiles(rc.getInt(CONFIG_CORE_SECTION, null,
CONFIG_KEY_PACKED_GIT_OPENFILES, getPackedGitOpenFiles()));
setPackedGitLimit(rc.getLong(CONFIG_CORE_SECTION, null,
CONFIG_KEY_PACKED_GIT_LIMIT, getPackedGitLimit()));
setPackedGitWindowSize(rc.getInt(CONFIG_CORE_SECTION, null,
CONFIG_KEY_PACKED_GIT_WINDOWSIZE, getPackedGitWindowSize()));
setPackedGitMMAP(rc.getBoolean(CONFIG_CORE_SECTION, null,
CONFIG_KEY_PACKED_GIT_MMAP, isPackedGitMMAP()));
setDeltaBaseCacheLimit(rc.getInt(CONFIG_CORE_SECTION, null,
CONFIG_KEY_DELTA_BASE_CACHE_LIMIT, getDeltaBaseCacheLimit()));


long maxMem = Runtime.getRuntime().maxMemory(); long maxMem = Runtime.getRuntime().maxMemory();
long sft = rc.getLong(
"core", null, "streamfilethreshold", getStreamFileThreshold()); //$NON-NLS-1$ //$NON-NLS-2$
long sft = rc.getLong(CONFIG_CORE_SECTION, null,
CONFIG_KEY_STREAM_FILE_TRESHOLD, getStreamFileThreshold());
sft = Math.min(sft, maxMem / 4); // don't use more than 1/4 of the heap sft = Math.min(sft, maxMem / 4); // don't use more than 1/4 of the heap
sft = Math.min(sft, Integer.MAX_VALUE); // cannot exceed array length sft = Math.min(sft, Integer.MAX_VALUE); // cannot exceed array length
setStreamFileThreshold((int) sft); setStreamFileThreshold((int) sft);

+ 2
- 4
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/AbstractTreeIterator.java View File

path = p.path; path = p.path;
pathOffset = p.pathLen + 1; pathOffset = p.pathLen + 1;


try {
path[pathOffset - 1] = '/';
} catch (ArrayIndexOutOfBoundsException e) {
if (pathOffset > path.length) {
growPath(p.pathLen); growPath(p.pathLen);
path[pathOffset - 1] = '/';
} }
path[pathOffset - 1] = '/';
} }


/** /**

+ 4
- 5
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java View File

tmp = pathOffset; tmp = pathOffset;
for (;; tmp++) { for (;; tmp++) {
c = raw[ptr++]; c = raw[ptr++];
if (c == 0)
if (c == 0) {
break; break;
try {
path[tmp] = c;
} catch (ArrayIndexOutOfBoundsException e) {
}
if (tmp >= path.length) {
growPath(tmp); growPath(tmp);
path[tmp] = c;
} }
path[tmp] = c;
} }
pathLen = tmp; pathLen = tmp;
nextPtr = ptr + OBJECT_ID_LENGTH; nextPtr = ptr + OBJECT_ID_LENGTH;

Loading…
Cancel
Save