gpt4 book ai didi

loops - 善变的预提交无限循环

转载 作者:行者123 更新时间:2023-12-03 06:19:12 25 4
gpt4 key购买 nike

好的,这就是问题所在,我正在使用 Gradle 在 Java 中开发应用程序。
我有一个 Gradle 任务,如果它不存在,它会在每个文件的顶部添加一个许可证。

我想添加一个预提交 Hook ,以便在我提交文件时,Gradle 任务运行并在需要时更改文件顶部的许可证。请记住,Gradle licenseFormat 可能同时更改任何文件或超过 10 个文件,因此我无法知道更改了哪些文件以将它们添加到手动提交。

我试过这个钩子(Hook):

[hooks]
pre-commit.licenseFormat=C:/Users/pc/Dropbox/{REPOSITORIES}/{PETULANT}/format.bat

它只是调用一个运行 Gradle 命令的批处理文件,但正如我所怀疑的那样,由于某些文件已更改,而这些文件不在当前提交中,因此提交被卡住了,并且似乎陷入了调用批处理文件时间的无限循环一次又一次,每次它都会触发命令。
在命令的下一次运行中,不应更改任何内容,但是当第一次运行更改的文件超过几个时,我认为提交会触发批处理文件两次以上。

所以问题是,如何在第一次运行批处理文件后停止提交 Hook 并将更改的文件添加到当前或新提交?

谢谢。

最佳答案

批处理文件只是命令:

gradlew licenseFormat


正如我所说,它运行一个 gradle 任务,将在所需文件的顶部添加许可证注释,换句话说,它首先检查文件的标题并将其与应该存在的标题进行比较,如果它们相同,那么文件将不会被触及,但如果它们不一样,它会删除标题并将许可文本添加为​​头顶的注释,如果您想要更多的深入了解,实际任务是这样的:

buildscript{
repositories{
mavenCentral()
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
maven { url = "https://oss.sonatype.org/content/repositories/snapshots" }
}
dependencies{
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
classpath 'org.ajoberstar:gradle-git:0.10.1'
classpath 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0'
}
}

apply plugin: 'license'

license{
ext.name = project.name
ext.organization = project.organization
ext.url = project.url
ext.year = project.inceptionYear
exclude '**/*.info'
exclude '**/*.json'
exclude '**/*.ma'
exclude '**/*.mb'
exclude '**/*.png'
header new File(projectDir, 'HEADER.txt')
sourceSets = project.sourceSets
ignoreFailures = false
strictCheck = true
mapping { java = 'SLASHSTAR_STYLE'}
}

关于loops - 善变的预提交无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27525405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com