簡體   English   中英

假設沒有提交的更改,如何獲得項目的git版本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM