Merge branch 'stable-4.6'
* stable-4.6: GC: delete empty directories after purging loose objects GC.prune(Set<ObjectId>): return early if objects directory is empty Change-Id: I3d6cacf80d3b4c69ba108e970855963bd9f6ee78 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
commit
566794d001
|
@ -455,7 +455,9 @@ public void prune(Set<ObjectId> objectsToKeep) throws IOException,
|
|||
Set<ObjectId> indexObjects = null;
|
||||
File objects = repo.getObjectsDirectory();
|
||||
String[] fanout = objects.list();
|
||||
if (fanout != null && fanout.length > 0) {
|
||||
if (fanout == null || fanout.length == 0) {
|
||||
return;
|
||||
}
|
||||
pm.beginTask(JGitText.get().pruneLooseUnreferencedObjects,
|
||||
fanout.length);
|
||||
try {
|
||||
|
@ -493,9 +495,10 @@ public void prune(Set<ObjectId> objectsToKeep) throws IOException,
|
|||
} finally {
|
||||
pm.endTask();
|
||||
}
|
||||
}
|
||||
if (deletionCandidates.isEmpty())
|
||||
|
||||
if (deletionCandidates.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
checkCancelled();
|
||||
|
||||
|
@ -576,12 +579,19 @@ public void prune(Set<ObjectId> objectsToKeep) throws IOException,
|
|||
// loose objects. Make a last check, though, to avoid deleting objects
|
||||
// that could have been referenced while the candidates list was being
|
||||
// built (by an incoming push, for example).
|
||||
Set<File> touchedFanout = new HashSet<>();
|
||||
for (File f : deletionCandidates.values()) {
|
||||
if (f.lastModified() < expireDate) {
|
||||
f.delete();
|
||||
touchedFanout.add(f.getParentFile());
|
||||
}
|
||||
}
|
||||
|
||||
for (File f : touchedFanout) {
|
||||
FileUtils.delete(f,
|
||||
FileUtils.EMPTY_DIRECTORIES_ONLY | FileUtils.IGNORE_ERRORS);
|
||||
}
|
||||
|
||||
repo.getObjectDatabase().close();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue