Java 假设没有提交的更改,如何获得项目的git版本?
如果我在本地有未提交的更改,我希望有一种方法能够将“unknown”作为我的git修订返回。如果没有,它应该返回正确的git版本Java 假设没有提交的更改,如何获得项目的git版本?,java,git,gradle,Java,Git,Gradle,如果我在本地有未提交的更改,我希望有一种方法能够将“unknown”作为我的git修订返回。如果没有,它应该返回正确的git版本 String getGitRevision() { String gitRevision = "unknown" try { def cmd = "git rev-parse HEAD" def proc = cmd.execute() gitRevision = proc.text.trim()
String getGitRevision() {
String gitRevision = "unknown"
try {
def cmd = "git rev-parse HEAD"
def proc = cmd.execute()
gitRevision = proc.text.trim()
}
catch (IOException ioe) {
println "Fetch revision failed."
}
return gitRevision;
}
我希望在本地有未提交的更改时,getGitRevision()返回unknown
但即使我有未提交的更改,它也会获取正确的修订id。我真的不确定如何添加该逻辑。
HEAD
可以解析为提交,只要存在当前提交,并且几乎总是存在当前提交。“未提交的更改”与是否存在当前提交无关
要将索引和工作树与当前提交进行比较,请使用git status
。要做到这一点,在您自己的软件中,考虑使用<代码> Git——没有可选的锁状态--Guale= V2,也许还有<代码> -Z/COM>,并读取它的输出,如图所示。然后,您的代码可以选择要考虑“未提交更改”的内容(包括未跟踪的文件,以及如果添加“代码> >忽略< /代码>,忽略文件”。
对于这种特殊情况,您可以使用git descripe--always--dirty并检查-dirty
后缀。或者因为这是git描述的本身运行的git diff index——quiet HEAD并检查其退出状态:0表示“不脏”,1表示“脏”,其他任何表示“无法判断,出了问题”。使用git status--cereal…
的方法是最灵活的,因为它允许您定义“脏”的含义,但其他两种方法要简单得多