Make sure modifications to config-param trustFolderStat are detected

ObjectDirectory.searchPacksAgain() should always read trustFolderStat
from the config and not rely on a cached value.

Change-Id: I90edbaae3c64eea0c9894d05acde4267991575ee
This commit is contained in:
Christian Halstrick 2014-12-05 14:39:18 +01:00
parent c9a5fdb3cd
commit 1b9130e8db
1 changed files with 10 additions and 11 deletions

View File

@ -131,14 +131,6 @@ public class ObjectDirectory extends FileObjectDatabase {
private Set<ObjectId> shallowCommitsIds;
// Whether to trust the pack folder's modification time. If set
// to false we will always scan the .git/objects/pack folder to
// check for new pack files. If set to true (default) we use the
// lastmodified attribute of the folder and assume that no new
// pack files can be in this folder if his modification time has
// not changed.
private boolean trustFolderStat = true;
/**
* Initialize a reference to an on-disk object directory.
*
@ -161,9 +153,6 @@ public ObjectDirectory(final Config cfg, final File dir,
File[] alternatePaths, FS fs, File shallowFile) throws IOException {
config = cfg;
objects = dir;
trustFolderStat = config.getBoolean(
ConfigConstants.CONFIG_CORE_SECTION,
ConfigConstants.CONFIG_KEY_TRUSTFOLDERSTAT, true);
infoDirectory = new File(objects, "info"); //$NON-NLS-1$
packDirectory = new File(objects, "pack"); //$NON-NLS-1$
alternatesFile = new File(infoDirectory, "alternates"); //$NON-NLS-1$
@ -618,6 +607,16 @@ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
}
private boolean searchPacksAgain(PackList old) {
// Whether to trust the pack folder's modification time. If set
// to false we will always scan the .git/objects/pack folder to
// check for new pack files. If set to true (default) we use the
// lastmodified attribute of the folder and assume that no new
// pack files can be in this folder if his modification time has
// not changed.
boolean trustFolderStat = config.getBoolean(
ConfigConstants.CONFIG_CORE_SECTION,
ConfigConstants.CONFIG_KEY_TRUSTFOLDERSTAT, true);
return ((!trustFolderStat) || old.snapshot.isModified(packDirectory))
&& old != scanPacks(old);
}