Code cleanup
This commit is contained in:
parent
0512510be6
commit
e16939a6ef
39
README.md
39
README.md
@ -1,26 +1,31 @@
|
||||
# Gitnuro - Multiplatform Git Client
|
||||
|
||||
[](https://github.com/JetpackDuba/Gitnuro/releases/latest)
|
||||
|
||||

|
||||
|
||||
A FOSS Git client based on (Jetbrains) Compose and JGit.
|
||||
|
||||
The main goal of Gitnuro is to provide a multiplatform open source Git client without any kind of constraint to how you can use it nor relying on web technologies.
|
||||
The main goal of Gitnuro is to provide a multiplatform open source Git client without any kind of constraint to how you
|
||||
can use it nor relying on web technologies.
|
||||
|
||||
## Download/Install
|
||||
|
||||
Linux:
|
||||
- Available as Flatpak [here](https://beta.flathub.org/apps/details/com.jetpackduba.Gitnuro) or by running `flatpak install --user com.jetpackduba.Gitnuro` if you have Flatpak & Flathub already setup.
|
||||
|
||||
- Available as Flatpak [here](https://beta.flathub.org/apps/details/com.jetpackduba.Gitnuro) or by
|
||||
running `flatpak install --user com.jetpackduba.Gitnuro` if you have Flatpak & Flathub already setup.
|
||||
- JAR file can be executed as a portable version (Requires JRE 17).
|
||||
|
||||
Windows:
|
||||
|
||||
- [Installable & portable version](https://github.com/JetpackDuba/Gitnuro/releases/latest).
|
||||
|
||||
MacOS:
|
||||
|
||||
- [ZIP which contains the app bundle](https://github.com/JetpackDuba/Gitnuro/releases/latest).
|
||||
- Using hombrew: `brew install jetpackduba/apps/gitnuro`
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
Gitnuro has support for the following features:
|
||||
@ -56,11 +61,9 @@ Gitnuro has support for the following features:
|
||||
- Side by side diff in text files.
|
||||
- Stage/Unstage specific lines.
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary><b>Features planned</b></summary>
|
||||
|
||||
|
||||
- Create/Apply patches
|
||||
- Remove tags from remote.
|
||||
- View stashes in the log tree.
|
||||
@ -69,13 +72,15 @@ Gitnuro has support for the following features:
|
||||
- Syntax highlighting for diff.
|
||||
- Various log options like showing the author, filtering by current branch o hide remote branches.
|
||||
- Customizations settings.
|
||||
|
||||
</details>
|
||||
|
||||
## Contributing
|
||||
|
||||
If you find a bug or you would like to suggest a new feature, feel free to open an issue.
|
||||
|
||||
Pull requests are also welcome but please create an issue first if it's a new feature. If you want to work on an existing issue, please comment so I'm aware of it and discuss the changes if required.
|
||||
Pull requests are also welcome but please create an issue first if it's a new feature. If you want to work on an
|
||||
existing issue, please comment so I'm aware of it and discuss the changes if required.
|
||||
See [this page](DEVELOPMENT.md) for how to set up your development environment.
|
||||
|
||||
## FAQ
|
||||
@ -90,7 +95,8 @@ Gitnuro does not track data in any way, don't worry.
|
||||
|
||||
> I don't like the built-in themes, can I create a custom one?
|
||||
|
||||
Gitnuro includes the option to set custom themes in a JSON format. Keep in mind that themes may break with new releases, making the default theme the fallback option.
|
||||
Gitnuro includes the option to set custom themes in a JSON format. Keep in mind that themes may break with new releases,
|
||||
making the default theme the fallback option.
|
||||
|
||||
For the latest stable version (1.1.0), you can use this JSON as an example:
|
||||
|
||||
@ -124,32 +130,37 @@ For the latest stable version (1.1.0), you can use this JSON as an example:
|
||||
|
||||
Colors are in ARGB Hex format.
|
||||
|
||||
> Why isn't the Mac version signed?
|
||||
> Why isn't the Mac version signed?
|
||||
|
||||
The cost of the Apple Developer Program is quite high with a platform that currently has very few users. I may pay for it if it's a very requested feature but not for now.
|
||||
The cost of the Apple Developer Program is quite high with a platform that currently has very few users. I may pay for
|
||||
it if it's a very requested feature but not for now.
|
||||
|
||||
> Authentication has failed. What's wrong?
|
||||
|
||||
Currently there are some limitations regarding this topic. Here are some known problematic setups:
|
||||
|
||||
- SSH keys managed by external agents (https://github.com/JetpackDuba/Gitnuro/issues/17).
|
||||
- Configurations added to .ssh/config
|
||||
- Non-default ssh dir path.
|
||||
- Multicast DNS remote URL (https://github.com/JetpackDuba/Gitnuro/issues/19) with this workaround (https://github.com/JetpackDuba/Gitnuro/issues/19#issuecomment-1374431720).
|
||||
- Multicast DNS remote URL (https://github.com/JetpackDuba/Gitnuro/issues/19) with this
|
||||
workaround (https://github.com/JetpackDuba/Gitnuro/issues/19#issuecomment-1374431720).
|
||||
- Self signed server certificate (https://github.com/JetpackDuba/Gitnuro/issues/48)
|
||||
|
||||
If the authentication fails and you think its due to a different reason, please open a new issue.
|
||||
|
||||
|
||||
> Does it support Git credentials manager (aka manager-core)?
|
||||
Yes but it requires specifying the full path of the binary in your `.gitconfig`.
|
||||
> Yes but it requires specifying the full path of the binary in your `.gitconfig`.
|
||||
|
||||
Example for linux:
|
||||
|
||||
Example for linux:
|
||||
```
|
||||
[credential]
|
||||
helper = /usr/share/git-credential-manager-core/git-credential-manager-core
|
||||
```
|
||||
|
||||
Example for windows (you may want to edit `C:\Program Files\mingw64\etc\gitconfig`):
|
||||
Example for windows (you may want to edit `C:\Program Files\mingw64\etc\gitconfig`):
|
||||
|
||||
```
|
||||
[credential]
|
||||
helper = C:/Program Files/Git/mingw64/bin/git-credential-manager-core.exe
|
||||
|
@ -29,7 +29,6 @@ import com.jetpackduba.gitnuro.extensions.systemSeparator
|
||||
import com.jetpackduba.gitnuro.extensions.toWindowPlacement
|
||||
import com.jetpackduba.gitnuro.git.AppGpgSigner
|
||||
import com.jetpackduba.gitnuro.logging.printError
|
||||
import com.jetpackduba.gitnuro.logging.printLog
|
||||
import com.jetpackduba.gitnuro.preferences.AppSettings
|
||||
import com.jetpackduba.gitnuro.theme.AppTheme
|
||||
import com.jetpackduba.gitnuro.theme.Theme
|
||||
@ -155,7 +154,7 @@ class App {
|
||||
val tabs by tabsManager.tabsFlow.collectAsState()
|
||||
val currentTab = tabsManager.currentTab.collectAsState().value
|
||||
|
||||
if(currentTab != null) {
|
||||
if (currentTab != null) {
|
||||
Column(
|
||||
modifier = Modifier.background(MaterialTheme.colors.background)
|
||||
) {
|
||||
@ -200,7 +199,7 @@ class App {
|
||||
}
|
||||
}
|
||||
|
||||
fun getDirToOpen(args: Array<String>): File? {
|
||||
private fun getDirToOpen(args: Array<String>): File? {
|
||||
if (args.isNotEmpty()) {
|
||||
val repoToOpen = args.first()
|
||||
val path = Paths.get(repoToOpen)
|
||||
|
@ -3,7 +3,6 @@ package com.jetpackduba.gitnuro
|
||||
import com.jetpackduba.gitnuro.extensions.OS
|
||||
import com.jetpackduba.gitnuro.extensions.getCurrentOs
|
||||
import com.jetpackduba.gitnuro.logging.printError
|
||||
import com.jetpackduba.gitnuro.logging.printLog
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -2,7 +2,10 @@ package com.jetpackduba.gitnuro
|
||||
|
||||
import com.jetpackduba.gitnuro.di.qualifiers.AppCoroutineScope
|
||||
import com.jetpackduba.gitnuro.preferences.AppSettings
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.cancel
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.serialization.decodeFromString
|
||||
import kotlinx.serialization.encodeToString
|
||||
|
@ -50,7 +50,7 @@ class HttpCredentialsProvider @AssistedInject constructor(
|
||||
passwordItem.value = credentials.password.toCharArray()
|
||||
|
||||
return true
|
||||
} else if(credentials is CredentialsState.CredentialsDenied) {
|
||||
} else if (credentials is CredentialsState.CredentialsDenied) {
|
||||
throw CancellationException("Credentials denied")
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ class HttpCredentialsProvider @AssistedInject constructor(
|
||||
credentials: CredentialsAccepted.HttpCredentialsAccepted
|
||||
) {
|
||||
val process = Runtime.getRuntime()
|
||||
.exec(String.format("${externalCredentialsHelper.path} %s", "store"));
|
||||
.exec(String.format("${externalCredentialsHelper.path} %s", "store"))
|
||||
|
||||
val output = process.outputStream // write to the input stream of the helper
|
||||
val bufferedWriter = BufferedWriter(OutputStreamWriter(output))
|
||||
|
@ -118,7 +118,7 @@ class TabState @Inject constructor(
|
||||
delayMs = 300,
|
||||
onDelayTriggered = {
|
||||
_processing.update { processingState ->
|
||||
if(processingState is ProcessingState.None) {
|
||||
if (processingState is ProcessingState.None) {
|
||||
ProcessingState.Processing(title, subtitle, isCancellable)
|
||||
} else {
|
||||
processingState
|
||||
|
@ -29,7 +29,7 @@ class FetchAllBranchesUseCase @Inject constructor(
|
||||
.setRemoveDeletedRefs(true)
|
||||
.setTransportConfigCallback { handleTransportUseCase(it, git) }
|
||||
.setCredentialsProvider(CredentialsProvider.getDefault())
|
||||
.setProgressMonitor(object: ProgressMonitor {
|
||||
.setProgressMonitor(object : ProgressMonitor {
|
||||
override fun start(totalTasks: Int) {}
|
||||
|
||||
override fun beginTask(title: String?, totalWork: Int) {}
|
||||
|
@ -25,7 +25,7 @@ class PushBranchUseCase @Inject constructor(
|
||||
setPushTags()
|
||||
}
|
||||
.setTransportConfigCallback { handleTransportUseCase(it, git) }
|
||||
.setProgressMonitor(object: ProgressMonitor {
|
||||
.setProgressMonitor(object : ProgressMonitor {
|
||||
override fun start(totalTasks: Int) {}
|
||||
override fun beginTask(title: String?, totalWork: Int) {}
|
||||
override fun update(completed: Int) {}
|
||||
|
@ -7,6 +7,7 @@ val logger = KotlinLogging.logger("org.slf4j")
|
||||
fun printLog(tag: String, message: String) {
|
||||
logger.info("$tag - $message")
|
||||
}
|
||||
|
||||
fun printDebug(tag: String, message: String) {
|
||||
logger.debug("$tag - $message")
|
||||
}
|
||||
|
@ -1,8 +1,5 @@
|
||||
package com.jetpackduba.gitnuro
|
||||
|
||||
import io.github.oshai.KotlinLogging
|
||||
import java.util.logging.Logger
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val app = App()
|
||||
app.start(args)
|
||||
|
@ -17,7 +17,6 @@ interface SSHLibrary : Library {
|
||||
|
||||
fun ssh_connect(session: ssh_session): Int
|
||||
|
||||
fun ssh_userauth_agent(session: ssh_session, username: String?): Int
|
||||
fun ssh_userauth_publickey_auto(session: ssh_session, username: String?, password: String?): Int
|
||||
fun ssh_userauth_password(session: ssh_session, username: String?, password: String?): Int
|
||||
fun ssh_get_error(session: ssh_session): String
|
||||
@ -29,23 +28,13 @@ interface SSHLibrary : Library {
|
||||
fun ssh_channel_request_exec(sshChannel: ssh_channel, command: String): Int
|
||||
|
||||
fun ssh_channel_read(sshChannel: ssh_channel, buffer: ByteArray, count: Int, isStderr: Int): Int
|
||||
fun ssh_channel_read_timeout(
|
||||
sshChannel: ssh_channel,
|
||||
buffer: ByteArray,
|
||||
count: Int,
|
||||
isStderr: Int,
|
||||
timeoutMs: Int
|
||||
): Int
|
||||
|
||||
fun ssh_channel_poll(sshChannel: ssh_channel, isStderr: Int): Int
|
||||
fun ssh_channel_read_nonblocking(sshChannel: ssh_channel, buffer: ByteArray, count: Int, isStderr: Int): Int
|
||||
|
||||
fun ssh_channel_write(sshChannel: ssh_channel, data: ByteArray, len: Int): Int
|
||||
|
||||
fun ssh_channel_close(sshChannel: ssh_channel): Int
|
||||
|
||||
fun ssh_channel_send_eof(sshChannel: ssh_channel): Int
|
||||
|
||||
fun ssh_channel_free(sshChannel: ssh_channel)
|
||||
fun ssh_channel_is_open(sshChannel: ssh_channel): Int
|
||||
|
||||
|
||||
|
@ -56,7 +56,7 @@ fun Blame(
|
||||
.focusRequester(focusRequester)
|
||||
.focusable()
|
||||
.onPreviewKeyEvent { keyEvent ->
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) {
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown) {
|
||||
onClose()
|
||||
true
|
||||
} else
|
||||
|
@ -13,6 +13,7 @@ import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.focus.FocusRequester
|
||||
import androidx.compose.ui.focus.focusRequester
|
||||
import androidx.compose.ui.platform.LocalClipboardManager
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.text.AnnotatedString
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@ -33,7 +34,6 @@ import org.eclipse.jgit.diff.DiffEntry
|
||||
import org.eclipse.jgit.lib.ObjectId
|
||||
import org.eclipse.jgit.lib.PersonIdent
|
||||
import org.eclipse.jgit.revwalk.RevCommit
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
||||
@Composable
|
||||
fun CommitChanges(
|
||||
@ -128,7 +128,7 @@ fun CommitChangesView(
|
||||
}
|
||||
}
|
||||
|
||||
if(showSearch) {
|
||||
if (showSearch) {
|
||||
AdjustableOutlinedTextField(
|
||||
value = searchFilter,
|
||||
onValueChange = {
|
||||
@ -141,14 +141,18 @@ fun CommitChangesView(
|
||||
}
|
||||
|
||||
LaunchedEffect(showSearch) {
|
||||
if(showSearch) {
|
||||
if (showSearch) {
|
||||
searchFocusRequester.requestFocus()
|
||||
}
|
||||
}
|
||||
|
||||
CommitLogChanges(
|
||||
diffSelected = diffSelected,
|
||||
diffEntries = if(showSearch && searchFilter.isNotBlank()) changes.filter { it.filePath.lowercaseContains(searchFilter) } else changes,
|
||||
diffEntries = if (showSearch && searchFilter.isNotBlank()) changes.filter {
|
||||
it.filePath.lowercaseContains(
|
||||
searchFilter
|
||||
)
|
||||
} else changes,
|
||||
onDiffSelected = onDiffSelected,
|
||||
onBlame = onBlame,
|
||||
onHistory = onHistory,
|
||||
|
@ -62,7 +62,7 @@ fun FileHistory(
|
||||
.focusRequester(focusRequester)
|
||||
.focusable()
|
||||
.onKeyEvent { keyEvent ->
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) {
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown) {
|
||||
onClose()
|
||||
true
|
||||
} else
|
||||
|
@ -11,7 +11,9 @@ import androidx.compose.material.Icon
|
||||
import androidx.compose.material.IconButton
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||
import androidx.compose.ui.Modifier
|
||||
|
@ -31,7 +31,7 @@ import java.io.File
|
||||
|
||||
@Composable
|
||||
fun CloneDialog(
|
||||
cloneViewModel: CloneViewModel = gitnuroViewModel(), // TODO THIS CRASHES
|
||||
cloneViewModel: CloneViewModel = gitnuroViewModel(),
|
||||
onClose: () -> Unit,
|
||||
onOpenRepository: (File) -> Unit,
|
||||
) {
|
||||
|
@ -17,7 +17,6 @@ import androidx.compose.ui.unit.dp
|
||||
import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.extensions.handMouseClickable
|
||||
import com.jetpackduba.gitnuro.models.AuthorInfo
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.theme.outlinedTextFieldColors
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
@ -64,7 +64,7 @@ fun MaterialDialog(
|
||||
.focusRequester(focusRequester)
|
||||
.focusable()
|
||||
.onPreviewKeyEvent { keyEvent ->
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) {
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown) {
|
||||
onCloseRequested()
|
||||
true
|
||||
} else
|
||||
|
@ -19,7 +19,6 @@ import androidx.compose.ui.unit.dp
|
||||
import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
||||
|
@ -19,7 +19,6 @@ import androidx.compose.ui.unit.dp
|
||||
import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
||||
|
@ -27,7 +27,6 @@ import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.extensions.handOnHover
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.theme.outlinedTextFieldColors
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
@ -19,7 +19,6 @@ import androidx.compose.ui.unit.dp
|
||||
import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
||||
|
@ -20,7 +20,6 @@ import androidx.compose.ui.unit.dp
|
||||
import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
import com.jetpackduba.gitnuro.theme.onBackgroundSecondary
|
||||
import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField
|
||||
import com.jetpackduba.gitnuro.ui.components.PrimaryButton
|
||||
|
||||
|
@ -85,7 +85,7 @@ fun Diff(
|
||||
indication = null
|
||||
) {}
|
||||
.onPreviewKeyEvent { keyEvent ->
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown ) {
|
||||
if (keyEvent.matchesBinding(KeybindingOption.EXIT) && keyEvent.type == KeyEventType.KeyDown) {
|
||||
onCloseDiffView()
|
||||
true
|
||||
} else
|
||||
|
@ -41,7 +41,6 @@ import com.jetpackduba.gitnuro.AppIcons
|
||||
import com.jetpackduba.gitnuro.extensions.*
|
||||
import com.jetpackduba.gitnuro.git.graph.GraphCommitList
|
||||
import com.jetpackduba.gitnuro.git.graph.GraphNode
|
||||
import com.jetpackduba.gitnuro.git.graph.UncommitedChangesGraphNode
|
||||
import com.jetpackduba.gitnuro.git.workspace.StatusSummary
|
||||
import com.jetpackduba.gitnuro.keybindings.KeybindingOption
|
||||
import com.jetpackduba.gitnuro.keybindings.matchesBinding
|
||||
@ -774,7 +773,7 @@ fun CommitLine(
|
||||
onRevCommitSelected: () -> Unit,
|
||||
onRebaseInteractive: () -> Unit,
|
||||
) {
|
||||
val isLastCommitOfCurrentBranch = currentBranch?.objectId?.name == graphNode.id.name
|
||||
val isLastCommitOfCurrentBranch = currentBranch?.objectId?.name == graphNode.id.name
|
||||
|
||||
ContextMenu(
|
||||
items = {
|
||||
|
@ -181,7 +181,7 @@ class TabViewModel @Inject constructor(
|
||||
val git = Git(repository)
|
||||
tabState.initGit(git)
|
||||
|
||||
val path = if(directory.name == ".git") {
|
||||
val path = if (directory.name == ".git") {
|
||||
directory.parent
|
||||
} else
|
||||
directory.absolutePath
|
||||
|
@ -29,9 +29,4 @@ class TabViewModelsHolder @Inject constructor(
|
||||
cloneViewModel::class to cloneViewModel,
|
||||
settingsViewModel::class to settingsViewModel,
|
||||
)
|
||||
|
||||
|
||||
fun getVMAndCacheIt() {
|
||||
|
||||
}
|
||||
}
|
@ -29,7 +29,6 @@ class BranchesViewModel @AssistedInject constructor(
|
||||
private val getCurrentBranchUseCase: GetCurrentBranchUseCase,
|
||||
private val mergeBranchUseCase: MergeBranchUseCase,
|
||||
private val getBranchesUseCase: GetBranchesUseCase,
|
||||
private val createBranchUseCase: CreateBranchUseCase,
|
||||
private val deleteBranchUseCase: DeleteBranchUseCase,
|
||||
private val checkoutRefUseCase: CheckoutRefUseCase,
|
||||
private val tabScope: CoroutineScope,
|
||||
|
@ -71,23 +71,23 @@ class SubmodulesViewModel @AssistedInject constructor(
|
||||
fun onDeinitializeSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Deinitializing submodule $path",
|
||||
){ git ->
|
||||
) { git ->
|
||||
deInitializeSubmoduleUseCase(git, path)
|
||||
}
|
||||
|
||||
fun onSyncSubmodule(path: String) = tabState.safeProcessing(
|
||||
fun onSyncSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Syncing submodule $path",
|
||||
subtitle = "Please wait until synchronization has finished",
|
||||
){ git ->
|
||||
) { git ->
|
||||
syncSubmoduleUseCase(git, path)
|
||||
}
|
||||
|
||||
fun onUpdateSubmodule(path: String) = tabState.safeProcessing(
|
||||
fun onUpdateSubmodule(path: String) = tabState.safeProcessing(
|
||||
refreshType = RefreshType.SUBMODULES,
|
||||
title = "Updating submodule $path",
|
||||
subtitle = "Please wait until update has finished",
|
||||
){ git ->
|
||||
) { git ->
|
||||
updateSubmoduleUseCase(git, path)
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<line x1="8" y1="9" x2="8" y2="16" stroke="black" stroke-width="2"/>
|
||||
<circle cx="8" cy="6" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="17" cy="9" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="8" cy="19" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<path d="M9.60651 17.0001L11.1551 15.7964C11.7332 15.3471 12.4033 15.031 13.1176 14.8708L15.0484 14.4378C16.1892 14.1819 17 13.1691 17 12" stroke="black" stroke-width="2"/>
|
||||
<line x1="8" y1="9" x2="8" y2="16" stroke="black" stroke-width="2"/>
|
||||
<circle cx="8" cy="6" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="17" cy="9" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<circle cx="8" cy="19" r="3" stroke="black" stroke-width="1.5"/>
|
||||
<path d="M9.60651 17.0001L11.1551 15.7964C11.7332 15.3471 12.4033 15.031 13.1176 14.8708L15.0484 14.4378C16.1892 14.1819 17 13.1691 17 12"
|
||||
stroke="black" stroke-width="2"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 539 B After Width: | Height: | Size: 569 B |
@ -1,6 +1,5 @@
|
||||
# Root logger option
|
||||
log4j.rootLogger=INFO, file, stdout
|
||||
|
||||
# Direct log messages to a log file
|
||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.file.File=${user.home}/.gitnuro/gitnuro.log
|
||||
@ -8,7 +7,6 @@ log4j.appender.file.MaxFileSize=10MB
|
||||
log4j.appender.file.MaxBackupIndex=10
|
||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||
|
||||
# Direct log messages to stdout
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.Target=System.out
|
||||
|
@ -1 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M4 4h16v12H5.17L4 17.17V4m0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h12v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000">
|
||||
<path d="M0 0h24v24H0V0z" fill="none"/>
|
||||
<path d="M4 4h16v12H5.17L4 17.17V4m0-2c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H4zm2 10h12v2H6v-2zm0-3h12v2H6V9zm0-3h12v2H6V6z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 300 B After Width: | Height: | Size: 311 B |
@ -1 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="#000000">
|
||||
<path d="M0 0h24v24H0V0z" fill="none"/>
|
||||
<path d="M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
|
||||
</svg>
|
Before Width: | Height: | Size: 360 B After Width: | Height: | Size: 371 B |
Loading…
Reference in New Issue
Block a user