Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn2018-10-05 09:19:01 +0000
committerMatthias Sohn2018-10-07 07:40:01 +0000
commitce15a86bc6934d509f20385740a955b231a5c794 (patch)
tree338fe78d1660b092503f6b2b752151499c5c5955
parent14d9be73ec947121eb3fd4fb42a1a3fe65c3f44f (diff)
downloadegit-ce15a86bc6934d509f20385740a955b231a5c794.tar.gz
egit-ce15a86bc6934d509f20385740a955b231a5c794.tar.xz
egit-ce15a86bc6934d509f20385740a955b231a5c794.zip
Don't use virtual memory mapping in WindowCache on Windows
Using virtual memory mapping has issues on Windows, especially it prevents moving or deleting mmap'ed packfiles. Hence disable it on Windows and hide the preference setting. Bug: 539789 Change-Id: Id417dc0b6433218de245055b136ae2112ca6e041 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/GitCorePreferenceInitializer.java4
-rw-r--r--org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java10
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/WindowCachePreferencePage.java11
3 files changed, 20 insertions, 5 deletions
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/GitCorePreferenceInitializer.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/GitCorePreferenceInitializer.java
index 4aefd8a005..3a2f121c0b 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/GitCorePreferenceInitializer.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/GitCorePreferenceInitializer.java
@@ -15,6 +15,7 @@ package org.eclipse.egit.core;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.jgit.util.SystemReader;
/** Initializes plugin preferences with default values. */
public class GitCorePreferenceInitializer extends AbstractPreferenceInitializer {
@@ -26,7 +27,8 @@ public class GitCorePreferenceInitializer extends AbstractPreferenceInitializer
p.putInt(GitCorePreferences.core_packedGitWindowSize, 8 * 1024);
p.putInt(GitCorePreferences.core_packedGitLimit, 10 * MB);
- p.putBoolean(GitCorePreferences.core_packedGitMMAP, true);
+ p.putBoolean(GitCorePreferences.core_packedGitMMAP,
+ !SystemReader.getInstance().isWindows());
p.putInt(GitCorePreferences.core_deltaBaseCacheLimit, 10 * MB);
p.putInt(GitCorePreferences.core_streamFileThreshold, 50 * MB);
p.putBoolean(GitCorePreferences.core_autoShareProjects, true);
diff --git a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
index e66aeb81e9..507c37fd4c 100644
--- a/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
+++ b/org.eclipse.egit.core/src/org/eclipse/egit/core/project/GitProjectData.java
@@ -63,6 +63,7 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.storage.file.WindowCacheConfig;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
+import org.eclipse.jgit.util.SystemReader;
import org.eclipse.osgi.util.NLS;
import org.eclipse.team.core.RepositoryProvider;
import org.eclipse.team.core.TeamException;
@@ -416,7 +417,14 @@ public class GitProjectData {
IEclipsePreferences p = InstanceScope.INSTANCE.getNode(Activator.getPluginId());
c.setPackedGitLimit(p.getInt(GitCorePreferences.core_packedGitLimit, d.getInt(GitCorePreferences.core_packedGitLimit, 0)));
c.setPackedGitWindowSize(p.getInt(GitCorePreferences.core_packedGitWindowSize, d.getInt(GitCorePreferences.core_packedGitWindowSize, 0)));
- c.setPackedGitMMAP(p.getBoolean(GitCorePreferences.core_packedGitMMAP, d.getBoolean(GitCorePreferences.core_packedGitMMAP, false)));
+ if (SystemReader.getInstance().isWindows()) {
+ c.setPackedGitMMAP(false);
+ } else {
+ c.setPackedGitMMAP(
+ p.getBoolean(GitCorePreferences.core_packedGitMMAP,
+ d.getBoolean(GitCorePreferences.core_packedGitMMAP,
+ false)));
+ }
c.setDeltaBaseCacheLimit(p.getInt(GitCorePreferences.core_deltaBaseCacheLimit, d.getInt(GitCorePreferences.core_deltaBaseCacheLimit, 0)));
c.setStreamFileThreshold(p.getInt(GitCorePreferences.core_streamFileThreshold, d.getInt(GitCorePreferences.core_streamFileThreshold, 0)));
c.install();
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/WindowCachePreferencePage.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/WindowCachePreferencePage.java
index ce3c228887..2bf360a153 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/WindowCachePreferencePage.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/WindowCachePreferencePage.java
@@ -17,6 +17,7 @@ import org.eclipse.egit.core.project.GitProjectData;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jgit.util.SystemReader;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
@@ -63,9 +64,13 @@ public class WindowCachePreferencePage extends FieldEditorPreferencePage
UIText.WindowCachePreferencePage_streamFileThreshold,
getFieldEditorParent(), 10 * MB, 1 * GB));
- addField(new BooleanFieldEditor(GitCorePreferences.core_packedGitMMAP,
- UIText.WindowCachePreferencePage_packedGitMMAP,
- getFieldEditorParent()));
+ if (!SystemReader.getInstance().isWindows()) {
+ BooleanFieldEditor mmapEditor = new BooleanFieldEditor(
+ GitCorePreferences.core_packedGitMMAP,
+ UIText.WindowCachePreferencePage_packedGitMMAP,
+ getFieldEditorParent());
+ addField(mmapEditor);
+ }
}
@Override

Back to the top