Merge "Fix gc's usage of progress monitor"

This commit is contained in:
Stefan Lay 2012-08-28 03:02:19 -04:00 committed by Gerrit Code Review @ Eclipse.org
commit 47e4e9b177
1 changed files with 27 additions and 22 deletions

View File

@ -137,6 +137,7 @@ public GC(FileRepository repo) {
* @throws IOException
*/
public Collection<PackFile> gc() throws IOException {
pm.start(6 /* tasks */);
packRefs();
// TODO: implement reflog_expire(pm, repo);
Collection<PackFile> newPacks = repack();
@ -262,34 +263,38 @@ public void prune(Set<ObjectId> objectsToKeep)
if (fanout != null && fanout.length > 0) {
pm.beginTask(JGitText.get().pruneLooseUnreferencedObjects,
fanout.length);
for (String d : fanout) {
pm.update(1);
if (d.length() != 2)
continue;
File[] entries = new File(objects, d).listFiles();
if (entries == null)
continue;
for (File f : entries) {
String fName = f.getName();
if (fName.length() != Constants.OBJECT_ID_STRING_LENGTH - 2)
try {
for (String d : fanout) {
pm.update(1);
if (d.length() != 2)
continue;
if (f.lastModified() >= expireDate)
File[] entries = new File(objects, d).listFiles();
if (entries == null)
continue;
try {
ObjectId id = ObjectId.fromString(d + fName);
if (objectsToKeep.contains(id))
for (File f : entries) {
String fName = f.getName();
if (fName.length() != Constants.OBJECT_ID_STRING_LENGTH - 2)
continue;
if (indexObjects == null)
indexObjects = listNonHEADIndexObjects();
if (indexObjects.contains(id))
if (f.lastModified() >= expireDate)
continue;
deletionCandidates.put(id, f);
} catch (IllegalArgumentException notAnObject) {
// ignoring the file that does not represent loose
// object
continue;
try {
ObjectId id = ObjectId.fromString(d + fName);
if (objectsToKeep.contains(id))
continue;
if (indexObjects == null)
indexObjects = listNonHEADIndexObjects();
if (indexObjects.contains(id))
continue;
deletionCandidates.put(id, f);
} catch (IllegalArgumentException notAnObject) {
// ignoring the file that does not represent loose
// object
continue;
}
}
}
} finally {
pm.endTask();
}
}
if (deletionCandidates.isEmpty())