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

标签 loops gradle mercurial infinite

好的,这就是问题所在,我正在使用 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/

相关文章:

javascript - 如何将 onclick 事件附加到 vuejs "v-for="生成的每个项目以显示或隐藏其内部元素

git - Gradle-Git 插件使用

mercurial - 是否可以手动更改/重新排序修订号(假设拓扑保持不变)?

java - 如何在同一个查询中同时将两个Arraylist值插入到数据库表中

c - "for(; ;)"优先于 "while(1)"

javascript - for循环在javascript中被跳过

android - 错误:(8,30)错误:即使我已编译com.android.support:support,也找不到符号类ActionBarActivity

android - Android Studio 上用于 NDK 的新实验性 Gradle 中的 preBuild 依赖项

mercurial - hg convert - 尝试将目录从一个 repo 移动到另一个 repo

python - 应用程序在 Mercurial 存储库中访问自己的版本