diff options
author | Matthias Sohn | 2018-10-05 09:19:01 +0000 |
---|---|---|
committer | Matthias Sohn | 2018-10-07 07:40:01 +0000 |
commit | ce15a86bc6934d509f20385740a955b231a5c794 (patch) | |
tree | 338fe78d1660b092503f6b2b752151499c5c5955 | |
parent | 14d9be73ec947121eb3fd4fb42a1a3fe65c3f44f (diff) | |
download | egit-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>
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 |