aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/dev/msfjarvis/aps/util
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/util')
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/util/git/operation/GcOperation.kt22
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt4
2 files changed, 26 insertions, 0 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GcOperation.kt b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GcOperation.kt
new file mode 100644
index 00000000..c070027e
--- /dev/null
+++ b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GcOperation.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright © 2014-2022 The Android Password Store Authors. All Rights Reserved.
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+package dev.msfjarvis.aps.util.git.operation
+
+import dev.msfjarvis.aps.util.git.sshj.ContinuationContainerActivity
+import org.eclipse.jgit.api.GitCommand
+
+/**
+ * Run an aggressive garbage collection job on the repository, expiring every loose object to
+ * achieve the best compression.
+ */
+class GcOperation(
+ callingActivity: ContinuationContainerActivity,
+) : GitOperation(callingActivity) {
+
+ override val requiresAuth: Boolean = false
+ override val commands: Array<GitCommand<out Any>> =
+ arrayOf(git.gc().setAggressive(true).setExpire(null))
+}
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt
index 141de348..fe464069 100644
--- a/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/util/git/operation/GitOperation.kt
@@ -57,7 +57,11 @@ import org.eclipse.jgit.transport.URIish
*/
abstract class GitOperation(protected val callingActivity: FragmentActivity) {
+ /** List of [GitCommand]s that are executed by an operation. */
abstract val commands: Array<GitCommand<out Any>>
+
+ /** Whether the operation requires authentication or not. */
+ open val requiresAuth: Boolean = true
private val hostKeyFile = callingActivity.filesDir.resolve(".host_key")
private var sshSessionFactory: SshjSessionFactory? = null
private val hiltEntryPoint =