Added management state when the repository is in "reverting" state
This commit is contained in:
parent
591fa98508
commit
d5359effb6
@ -6,4 +6,7 @@ val RepositoryState.isMerging
|
||||
get() = this == RepositoryState.MERGING || this == RepositoryState.MERGING_RESOLVED
|
||||
|
||||
val RepositoryState.isCherryPicking
|
||||
get() = this == RepositoryState.CHERRY_PICKING || this == RepositoryState.CHERRY_PICKING_RESOLVED
|
||||
get() = this == RepositoryState.CHERRY_PICKING || this == RepositoryState.CHERRY_PICKING_RESOLVED
|
||||
|
||||
val RepositoryState.isReverting
|
||||
get() = this == RepositoryState.REVERTING || this == RepositoryState.REVERTING_RESOLVED
|
@ -25,7 +25,7 @@ class TabState @Inject constructor(
|
||||
val taskEvent: SharedFlow<TaskEvent> = _taskEvent
|
||||
|
||||
var git: Git? = null
|
||||
val safeGit: Git
|
||||
private val safeGit: Git
|
||||
get() {
|
||||
val git = this.git
|
||||
if (git == null) {
|
||||
|
@ -20,7 +20,6 @@ import androidx.compose.ui.input.pointer.PointerIconDefaults
|
||||
import androidx.compose.ui.input.pointer.pointerHoverIcon
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import app.extensions.handMouseClickable
|
||||
import app.theme.primaryTextColor
|
||||
import app.ui.context_menu.*
|
||||
|
@ -21,20 +21,16 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.input.key.Key
|
||||
import androidx.compose.ui.input.key.isCtrlPressed
|
||||
import androidx.compose.ui.input.key.key
|
||||
import androidx.compose.ui.input.key.onPreviewKeyEvent
|
||||
import androidx.compose.ui.input.pointer.pointerMoveFilter
|
||||
import androidx.compose.ui.text.TextStyle
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import app.extensions.*
|
||||
import app.git.DiffEntryType
|
||||
import app.git.StatusEntry
|
||||
import app.git.StatusType
|
||||
import app.keybindings.KeybindingOption
|
||||
import app.keybindings.matchesBinding
|
||||
import app.theme.*
|
||||
@ -226,6 +222,17 @@ fun UncommitedChanges(
|
||||
doCommit(false)
|
||||
}
|
||||
)
|
||||
repositoryState.isReverting -> RevertingButtons(
|
||||
haveConflictsBeenSolved = unstaged.none { it.statusType == StatusType.CONFLICTING },
|
||||
canCommit = commitMessage.isNotBlank(),
|
||||
onAbort = {
|
||||
statusViewModel.resetRepoState()
|
||||
statusViewModel.updateCommitMessage("")
|
||||
},
|
||||
onCommit = {
|
||||
doCommit(false)
|
||||
}
|
||||
)
|
||||
else -> UncommitedChangesButtons(
|
||||
canCommit = canCommit,
|
||||
canAmend = canAmend,
|
||||
@ -394,6 +401,34 @@ fun RebasingButtons(
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun RevertingButtons(
|
||||
canCommit: Boolean,
|
||||
haveConflictsBeenSolved: Boolean,
|
||||
onAbort: () -> Unit,
|
||||
onCommit: () -> Unit,
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
AbortButton(
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.padding(end = 4.dp),
|
||||
onClick = onAbort
|
||||
)
|
||||
|
||||
ConfirmationButton(
|
||||
text = "Continue",
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
.padding(start = 4.dp),
|
||||
enabled = canCommit && haveConflictsBeenSolved,
|
||||
onClick = onCommit,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun AbortButton(modifier: Modifier, onClick: () -> Unit) {
|
||||
Button(
|
||||
|
@ -639,6 +639,7 @@ fun UncommitedChangesLine(
|
||||
repositoryState.isRebasing -> "Pending changes to rebase"
|
||||
repositoryState.isMerging -> "Pending changes to merge"
|
||||
repositoryState.isCherryPicking -> "Pending changes to cherry-pick"
|
||||
repositoryState.isReverting -> "Pending changes to revert"
|
||||
else -> "Uncommited changes"
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package app.viewmodels
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import app.extensions.delayedStateChange
|
||||
import app.extensions.isMerging
|
||||
import app.extensions.isReverting
|
||||
import app.git.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
@ -47,7 +48,10 @@ class StatusViewModel @Inject constructor(
|
||||
) { git ->
|
||||
val messageToPersist = savedCommitMessage.message.ifBlank { null }
|
||||
|
||||
if (git.repository.repositoryState.isMerging) {
|
||||
if (git.repository.repositoryState.isMerging ||
|
||||
git.repository.repositoryState.isRebasing ||
|
||||
git.repository.repositoryState.isReverting
|
||||
) {
|
||||
git.repository.writeMergeCommitMsg(messageToPersist)
|
||||
} else if (git.repository.repositoryState == RepositoryState.SAFE) {
|
||||
git.repository.writeCommitEditMsg(messageToPersist)
|
||||
@ -134,8 +138,9 @@ class StatusViewModel @Inject constructor(
|
||||
|
||||
private fun messageByRepoState(git: Git): String {
|
||||
val message: String? = if (
|
||||
git.repository.repositoryState == RepositoryState.MERGING ||
|
||||
git.repository.repositoryState == RepositoryState.REBASING_MERGE
|
||||
git.repository.repositoryState.isMerging ||
|
||||
git.repository.repositoryState.isRebasing ||
|
||||
git.repository.repositoryState.isReverting
|
||||
) {
|
||||
git.repository.readMergeCommitMsg()
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user