[英]How do I get the git revision of my project assuming there are no committed changes?
如果我在本地未提交更改,我希望有一種方法可以返回“未知”作為我的git版本。 如果沒有,它應該返回正確的git版本。
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()返回未知。
但是,即使我有未提交的更改,它也會獲取正確的修訂版ID。 我不確定如何添加該邏輯。
只要存在當前提交,並且幾乎總是存在當前提交,則HEAD
可解析為提交。 “未提交的更改”與是否存在當前提交無關。
為了比較的指標和工作樹到當前提交,使用git status
。 為了可靠地執行此操作,請在您自己的軟件中考慮使用git --no-optional-locks status --porcelain=v2
(也許也使用-z
並讀取其輸出,如git status
文檔所示 。 然后,您的代碼可以選擇要考慮的“未提交的更改”(包括未跟蹤的文件,以及如果添加了--ignored
,被忽略的文件)。
對於這種特殊情況,您可以僅使用git describe --always --dirty
並檢查-dirty
后綴。 或者-因為這是git describe
自身的作用-運行git diff-index --quiet HEAD
並檢查其退出狀態:0表示“不臟”,1表示“臟”,其他表示“無法分辨,出了點問題” ”。 使用該方法git status --porcelain...
是最靈活的,因為它可以讓你定義你所說的“臟”的意思,但其他兩個要簡單得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.