28 lines
1.1 KiB
Kotlin
28 lines
1.1 KiB
Kotlin
package com.jetpackduba.gitnuro.git.log
|
|
|
|
import com.jetpackduba.gitnuro.exceptions.RevertCommitException
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.withContext
|
|
import org.eclipse.jgit.api.Git
|
|
import org.eclipse.jgit.api.MergeResult
|
|
import org.eclipse.jgit.revwalk.RevCommit
|
|
import javax.inject.Inject
|
|
|
|
class RevertCommitUseCase @Inject constructor() {
|
|
suspend operator fun invoke(git: Git, revCommit: RevCommit): Unit = withContext(Dispatchers.IO) {
|
|
val revertCommand = git
|
|
.revert()
|
|
.include(revCommit)
|
|
|
|
revertCommand.call()
|
|
|
|
val failingResult: MergeResult? = revertCommand.failingResult
|
|
|
|
when (failingResult?.mergeStatus) {
|
|
MergeResult.MergeStatus.FAILED -> throw RevertCommitException("Revert failed. Clear your workspace from uncommited changes.")
|
|
MergeResult.MergeStatus.CONFLICTING -> throw RevertCommitException("Revert failed. Fix the conflicts and commit the desired changes.")
|
|
MergeResult.MergeStatus.ABORTED -> throw RevertCommitException("Revert aborted.")
|
|
else -> {}
|
|
}
|
|
}
|
|
} |