Skip to content

Commit becbb93

Browse files
committed
Updated to JGit 7.0.0
1 parent 038603c commit becbb93

File tree

5 files changed

+57
-37
lines changed

5 files changed

+57
-37
lines changed

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ repositories {
4747
}
4848

4949
dependencies {
50-
val jgit = "6.9.0.202403050737-r"
50+
val jgit = "7.0.0.202409031743-r"
5151

5252
if (currentOs() == OS.LINUX && isLinuxAarch64) {
5353
implementation(compose.desktop.linux_arm64)
@@ -74,6 +74,7 @@ dependencies {
7474
implementation("org.slf4j:slf4j-api:2.0.7")
7575
implementation("org.slf4j:slf4j-reload4j:2.0.7")
7676
implementation("androidx.datastore:datastore-preferences-core:1.0.0")
77+
implementation("org.bouncycastle:bcpg-jdk18on:1.78.1")
7778
}
7879

7980
fun currentOs(): OS {

src/main/kotlin/com/jetpackduba/gitnuro/App.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ import com.jetpackduba.gitnuro.ui.components.TabInformation
4646
import com.jetpackduba.gitnuro.ui.context_menu.AppPopupMenu
4747
import com.jetpackduba.gitnuro.ui.dialogs.settings.ProxyType
4848
import kotlinx.coroutines.launch
49-
import org.eclipse.jgit.lib.GpgSigner
49+
import org.eclipse.jgit.lib.GpgConfig
50+
import org.eclipse.jgit.lib.Signer
51+
import org.eclipse.jgit.lib.SignerFactory
52+
import org.eclipse.jgit.lib.Signers
5053
import java.io.File
5154
import java.io.FileOutputStream
5255
import java.net.Authenticator
@@ -67,9 +70,6 @@ class App {
6770
@Inject
6871
lateinit var appSettingsRepository: AppSettingsRepository
6972

70-
@Inject
71-
lateinit var appGpgSigner: AppGpgSigner
72-
7373
@Inject
7474
lateinit var appEnvInfo: AppEnvInfo
7575

@@ -82,6 +82,9 @@ class App {
8282
@Inject
8383
lateinit var logging: Logging
8484

85+
@Inject
86+
lateinit var signer: AppGpgSigner
87+
8588
init {
8689
appComponent.inject(this)
8790
}
@@ -94,6 +97,8 @@ class App {
9497
logging.initLogging()
9598
initProxySettings()
9699

100+
Signers.set(GpgConfig.GpgFormat.OPENPGP, signer)
101+
97102
val windowPlacement = appSettingsRepository.windowPlacement.toWindowPlacement
98103
val dirToOpen = getDirToOpen(args)
99104

@@ -111,8 +116,6 @@ class App {
111116

112117
tabsManager.loadPersistedTabs()
113118

114-
GpgSigner.setDefault(appGpgSigner)
115-
116119
if (dirToOpen != null)
117120
addDirTab(dirToOpen)
118121

src/main/kotlin/com/jetpackduba/gitnuro/git/AppGpgSigner.kt

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,58 +4,65 @@ import com.jetpackduba.gitnuro.credentials.GpgCredentialsProvider
44
import org.bouncycastle.openpgp.PGPException
55
import org.eclipse.jgit.api.errors.CanceledException
66
import org.eclipse.jgit.gpg.bc.internal.BouncyCastleGpgSigner
7-
import org.eclipse.jgit.lib.CommitBuilder
8-
import org.eclipse.jgit.lib.GpgConfig
9-
import org.eclipse.jgit.lib.ObjectBuilder
10-
import org.eclipse.jgit.lib.PersonIdent
7+
import org.eclipse.jgit.lib.*
118
import org.eclipse.jgit.transport.CredentialsProvider
129
import javax.inject.Inject
1310
import javax.inject.Provider
1411

1512
private const val INVALID_PASSWORD_MESSAGE = "Is the entered passphrase correct?"
1613

1714
class AppGpgSigner @Inject constructor(
18-
private val gpgCredentialsProvider: Provider<GpgCredentialsProvider>,
15+
private val gpgCredentials: GpgCredentialsProvider,
1916
) : BouncyCastleGpgSigner() {
17+
2018
override fun sign(
21-
commit: CommitBuilder,
22-
gpgSigningKey: String,
23-
committer: PersonIdent,
19+
repository: Repository?,
20+
config: GpgConfig?,
21+
data: ByteArray?,
22+
committer: PersonIdent?,
23+
signingKey: String?,
2424
credentialsProvider: CredentialsProvider?
25-
) {
26-
super.sign(commit, gpgSigningKey, committer, gpgCredentialsProvider.get())
27-
}
25+
): GpgSignature {
26+
return try {
27+
var gpgSignature: GpgSignature? = null
28+
retryIfWrongPassphrase { isRetry ->
29+
gpgCredentials.isRetry = isRetry
30+
gpgSignature = super.sign(repository, config, data, committer, signingKey, gpgCredentials)
31+
gpgCredentials.savePasswordInMemory()
32+
}
33+
34+
gpgSignature!!
35+
} catch (ex: CanceledException) {
36+
println("Signing cancelled")
37+
throw ex
38+
}
2839

29-
override fun canLocateSigningKey(
30-
gpgSigningKey: String,
31-
committer: PersonIdent,
32-
credentialsProvider: CredentialsProvider?
33-
): Boolean {
34-
return super.canLocateSigningKey(gpgSigningKey, committer, gpgCredentialsProvider.get())
3540
}
3641

3742
override fun canLocateSigningKey(
38-
gpgSigningKey: String,
39-
committer: PersonIdent,
40-
credentialsProvider: CredentialsProvider?,
41-
config: GpgConfig?
43+
repository: Repository?,
44+
config: GpgConfig?,
45+
committer: PersonIdent?,
46+
signingKey: String?,
47+
credentialsProvider: CredentialsProvider?
4248
): Boolean {
43-
return super.canLocateSigningKey(gpgSigningKey, committer, gpgCredentialsProvider.get(), config)
49+
return super.canLocateSigningKey(repository, config, committer, signingKey, gpgCredentials)
4450
}
4551

4652
override fun signObject(
47-
`object`: ObjectBuilder,
48-
gpgSigningKey: String?,
49-
committer: PersonIdent,
50-
credentialsProvider: CredentialsProvider?,
51-
config: GpgConfig?
53+
repository: Repository?,
54+
config: GpgConfig?,
55+
`object`: ObjectBuilder?,
56+
committer: PersonIdent?,
57+
signingKey: String?,
58+
credentialsProvider: CredentialsProvider?
5259
) {
53-
val gpgCredentialsProvider = gpgCredentialsProvider.get()
60+
val gpgCredentialsProvider = gpgCredentials
5461

5562
try {
5663
retryIfWrongPassphrase { isRetry ->
5764
gpgCredentialsProvider.isRetry = isRetry
58-
super.signObject(`object`, gpgSigningKey, committer, gpgCredentialsProvider, config)
65+
super.signObject(repository, config, `object`, committer, signingKey, credentialsProvider)
5966
gpgCredentialsProvider.savePasswordInMemory()
6067
}
6168
} catch (ex: CanceledException) {

src/main/kotlin/com/jetpackduba/gitnuro/git/workspace/DoCommitUseCase.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.jetpackduba.gitnuro.git.workspace
22

33
import com.jetpackduba.gitnuro.extensions.isMerging
4+
import com.jetpackduba.gitnuro.git.AppGpgSigner
45
import com.jetpackduba.gitnuro.git.author.LoadAuthorUseCase
56
import com.jetpackduba.gitnuro.git.config.LoadSignOffConfigUseCase
67
import com.jetpackduba.gitnuro.git.config.LocalConfigConstants
@@ -15,14 +16,16 @@ import javax.inject.Inject
1516
class DoCommitUseCase @Inject constructor(
1617
private val loadSignOffConfigUseCase: LoadSignOffConfigUseCase,
1718
private val loadAuthorUseCase: LoadAuthorUseCase,
18-
private val getRepositoryStateUseCase: GetRepositoryStateUseCase
19+
private val getRepositoryStateUseCase: GetRepositoryStateUseCase,
20+
private val appGpgSigner: AppGpgSigner,
1921
) {
2022
suspend operator fun invoke(
2123
git: Git,
2224
message: String,
2325
amend: Boolean,
2426
author: PersonIdent?,
2527
): RevCommit = withContext(Dispatchers.IO) {
28+
2629
val signOffConfig = loadSignOffConfigUseCase(git.repository)
2730

2831
val finalMessage = if (signOffConfig.isEnabled) {

src/main/kotlin/com/jetpackduba/gitnuro/main.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
11
package com.jetpackduba.gitnuro
22

33
import com.jetpackduba.gitnuro.repositories.initPreferencesPath
4+
import org.bouncycastle.jce.provider.BouncyCastleProvider
5+
import java.security.Security
6+
7+
48

59
fun main(args: Array<String>) {
10+
Security.addProvider(BouncyCastleProvider())
11+
612
initPreferencesPath()
713

814
val app = App()

0 commit comments

Comments
 (0)