Previous attempt to fix git sha on non-git build broke git build. (#3322)
This uses unusual code provided by Mikhail Lopatkin of Gradle Inc: https://github.com/gradle/gradle/issues/23914#issuecomment-1431909019 It wraps the git sha function in a "value source". This allows it to interact correctly with configuration caching. Because the code is longer than before, it is now broken out into its own file getGitSha.gradle.
This commit is contained in:
parent
b760ebe004
commit
ab364712fe
2 changed files with 29 additions and 12 deletions
|
@ -5,19 +5,9 @@ plugins {
|
|||
alias(libs.plugins.kotlin.parcelize)
|
||||
}
|
||||
|
||||
// For constructing gitSha only
|
||||
def getGitSha = {
|
||||
try { // Try-catch is necessary for build to work on non-git distributions
|
||||
providers.exec {
|
||||
commandLine 'git', 'rev-parse', 'HEAD'
|
||||
executionResult.rethrowFailure() // Without this, sometimes it just stops immediately instead of throwing
|
||||
}.standardOutput.asText.get().trim()
|
||||
} catch (Exception e) {
|
||||
"unknown"
|
||||
}
|
||||
}
|
||||
apply from: 'getGitSha.gradle'
|
||||
|
||||
final def gitSha = getGitSha()
|
||||
final def gitSha = ext.getGitSha()
|
||||
|
||||
// The app name
|
||||
final def APP_NAME = "Tusky"
|
||||
|
|
27
app/getGitSha.gradle
Normal file
27
app/getGitSha.gradle
Normal file
|
@ -0,0 +1,27 @@
|
|||
import org.gradle.api.provider.ValueSourceParameters
|
||||
import javax.inject.Inject
|
||||
|
||||
// Must wrap this in a ValueSource in order to get well-defined fail behavior without confusing Gradle on repeat builds.
|
||||
abstract class GitShaValueSource implements ValueSource<String, ValueSourceParameters.None> {
|
||||
@Inject abstract ExecOperations getExecOperations()
|
||||
|
||||
@Override String obtain() {
|
||||
try {
|
||||
def output = new ByteArrayOutputStream()
|
||||
|
||||
execOperations.exec {
|
||||
it.commandLine 'git', 'rev-parse', '--short=8', 'HEAD'
|
||||
it.standardOutput = output
|
||||
}
|
||||
return output.toString().trim()
|
||||
} catch (GradleException ignore) {
|
||||
// Git executable unavailable, or we are not building in a git repo. Fall through:
|
||||
}
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
||||
// Export closure
|
||||
ext.getGitSha = {
|
||||
providers.of(GitShaValueSource) {}.get()
|
||||
}
|
Loading…
Reference in a new issue