blob: 35ac7a162a01838934c923e3e7bc7fbc5ff7bb57 [file] [log] [blame]
/*
* Copyright (C) 2012, Christian Halstrick <christian.halstrick@sap.com> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.pgm;
import org.eclipse.jgit.api.GarbageCollectCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.TextProgressMonitor;
import org.kohsuke.args4j.Option;
@Command(common = true, usage = "usage_Gc")
class Gc extends TextBuiltin {
@Option(name = "--aggressive", usage = "usage_Aggressive")
private boolean aggressive;
@Option(name = "--preserve-oldpacks", usage = "usage_PreserveOldPacks")
private Boolean preserveOldPacks;
@Option(name = "--prune-preserved", usage = "usage_PrunePreserved")
private Boolean prunePreserved;
@Option(name = "--pack-kept-objects", usage = "usage_PackKeptObjects")
private Boolean packKeptObjects;
/** {@inheritDoc} */
@Override
protected void run() {
Git git = Git.wrap(db);
try {
GarbageCollectCommand command = git.gc().setAggressive(aggressive)
.setProgressMonitor(new TextProgressMonitor(errw));
if (preserveOldPacks != null) {
command.setPreserveOldPacks(preserveOldPacks.booleanValue());
}
if (prunePreserved != null) {
command.setPrunePreserved(prunePreserved.booleanValue());
}
if (packKeptObjects != null) {
command.setPackKeptObjects(packKeptObjects.booleanValue());
}
command.call();
} catch (GitAPIException e) {
throw die(e.getMessage(), e);
}
}
}