2016-01-18 56 views
1

我的要求是捕獲兩個標記之間的提交消息,我想使用grgit插件來實現此目的。現在,爲grgit提供了一個文檔,我正在使用Log操作來獲取兩個標籤之間的提交日誌。我正在寫一個任務,並從命令提示符輸入ec =。我的任務如下所示:顯示列表的Git命令

task showLog <<{ 
    def grgit = org.ajoberstar.grgit.Grgit.open(dir: 'C:\\Rep9') 
    def history = grgit.log() 
} 

並執行像gradlew showLog這樣的任務。我的任務說BUILD BUILD SUCCESSFUL,但我無法在任何地方看到日誌。我希望看到整個日誌,並且可能會使用(我不確定)一些其他操作來捕獲我的消息,如果有人能夠提供幫助,那將非常棒。

回答

0

當您調用log()grgit對象,然後通過LogOp您將得到一個Commit對象的列表。然後你可以遍歷這個對象,並使用findAllgrep找到你需要的東西。

說到標籤,您可以使用TagService對它們進行操作。爲了獲得所述服務的實例,調用grgit.tag,然後via list()操作,獲取Tag的列表。用它來找到你感興趣的標籤。

Here的演示。

及相關部分:

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath 'org.ajoberstar:grgit:1.4.1' 
    } 
} 

import org.ajoberstar.grgit.Grgit 

task showLog <<{ 
    def grgit = project.file('so').exists() ? Grgit.open('so') : Grgit.clone(dir: 'so', uri: '[email protected]:Opalo/stackoverflow.git') 
    def log = grgit.log() 

    log.each { l -> 
    logger.lifecycle("ID: $l.id, Author: $l.author") 
    } 

    grgit.tag.list().each { t -> 
    logger.lifecycle("Commit: $t.commit.id, tagger: $t.tagger.email") 
    } 
} 
+0

如果我想獲得的所有提交的兩個標籤,標籤1和標籤2之間,我可以寫我的日誌操作:DEF登錄= {grgit.log範圍TAG2, tag1} – sver

+0

不,你不能。您需要獲取所有標籤/提交併在腳本中對其進行過濾。 – Opal

+0

好吧,我會嘗試這個演示。那麼,在上面的演示中,我們試圖迭代到我們獲取的提交/標籤列表。對?但是,1->/t - >究竟是什麼?我只是不明白這一點。 – sver