android:git命令在我的git帐户(BitBucket)上设置2FA之后不要在gradle中工作

时间:2018-02-02 14:22:12

标签: android git groovy android-gradle bitbucket

我通常设置versionCode& version git info的项目名称。 即versionCode描述git存储库中的最新标记,而versionName代表从头开始的提交总数。

/app/build.gradle将如下所示。

// ...
defaultConfig {
    // ...
    versionCode evalVersionCode()
    versionName evalVersionName()
    // ...
}

这两个函数定义如下。

/**
  * Generates versionName by latest tag in GIT
  */
 project.ext.evalVersionName = {
     // git describe --tags $(git rev-list --tags --max-count=1)
     def p = Runtime.getRuntime().exec("git describe --abbrev=0 --tags")
     def result = p.waitFor() // returns 1
     def versionName = "undefined"
     if (result == 0) {
         versionName = p.getInputStream().readLines().get(0)
     }
     project.logger.debug("versionName: git describe --abbrev=0 --tags => $versionName")
     return versionName // I expect "v0.8.3" here.
 }


/**
 * Generates versionCode by number of commits in GIT
 */
project.ext.evalVersionCode = {
    def p = Runtime.getRuntime().exec("git rev-list --all --count")
    def result = p.waitFor() // returns 1
    def versionCode = 0
    if (result == 0) {
        versionCode = p.getInputStream().readLines().get(0).toInteger()
    }
    project.logger.debug("versionCode: git rev-list --all --count => $versionCode")
    return versionCode // I expect 639 here.
}

这个机制运行良好,直到我在我的BitBucket帐户中设置2FA,该帐户具有此项目的存储库。 设置后,此代码不起作用,2个函数只返回硬编码结果,即" undefined" &安培; 0

这是因为git命令无法在构建阶段正常运行,即p.waitFor()返回非零值。

P.S。即使在2FA设置之后,git命令也能在终端中正常工作。

0 个答案:

没有答案