是否有一个Git命令来获取当前标记,分支和提交?

Kor*_*tor 43 git command-line maven mavanagaiata

我目前正在使用三个命令的集合来获取当前标记,分支以及最近提交的日期和SHA1.

git describe --always --tag
git log -1 --format="%H%n%aD"
git rev-parse --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)

这将输出如下内容:

1.2.3-5-gdeadbeef
deadbeef3b8d90071c24f51ac8f26ce97a72727b
Wed, 19 May 2010 09:12:34 +0200
master
Run Code Online (Sandbox Code Playgroud)

说实话,我对此完全没问题.但是我正在使用Maven的这些命令以及之前使用过Maven的人,知道外部命令会让POM膨胀多少.我只想减少我的pom.xml,可能会减少执行时间.

Jee*_*eet 52

  1. git log非常灵活,有很多很多选择.您可能无法重现上述三个命令的确切输出,但您可能已经足够接近以达到所需的效果.

    例如:

    git log --pretty=format:'%ad %h %d' --abbrev-commit --date=short -1
    
    Run Code Online (Sandbox Code Playgroud)

    生成最新(HEAD)提交的日期,SHA-1和符号引用(包括标记):

    2010-05-20 45bd5e7(HEAD,origin/master)

    之后,据推测,sed和/或awk或者Maven本地方法可以进行微调/抛光.请注意,特定标记与特定提交相关联,因此如果它是HEAD之前的三个提交,例如标记为"v1.0.0",则您不会看到"v1.0.0"显示为以上.

  2. 提供提交的succint描述的更简单的单个命令是:

    git describe
    
    Run Code Online (Sandbox Code Playgroud)

    写出最新的适用标记,自标记提交以来的提交数量以及SHA1:

    v3.3.0-46-g71a77dc

  3. 我对Maven一点也不熟悉,并且不知道运行外部进程有多么容易/困难,所以我不确定以下是否有任何帮助,但我想我可能会提到它以防万一.

    为了您在autoconf/automake框架中描述的确切目的,即标记构建,我实际上使用了类似的东西:

    BUILDTAG="`git symbolic-ref HEAD 2> /dev/null | cut -b 12-`-`git log --pretty=format:\"%h\" -1`"
    
    Run Code Online (Sandbox Code Playgroud)

    它产生适合于程序路径末尾的东西:

    主c5282ff

    更广泛的描述,适合作为注释或打印标识符包括:

    BUILDDESC="$(git symbolic-ref HEAD 2> /dev/null | cut -b 12-)-$(git log --pretty=format:'%h, %ad' -1)"
    
    Run Code Online (Sandbox Code Playgroud)

    产生类似的东西:

    master-c5282ff,Fri Mar 12 22:19:51 2010 -0600

我认为git log,可能与文本处理工具/方法结合使用可以获得您想要的效果.


Pet*_*mer 10

我不使用Maven,所以我不知道你是如何调用这些命令的,但是向git添加自定义命令相当简单.

创建一个名为git-tbc的脚本,如下所示:

#!/bin/bash

git describe --always --tag
git log -1 --format="%H%n%aD"
git rev-parse --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)

确保git-tbc在你的PATH中,你现在可以调用"git tbc".这是你在找什么?


Kor*_*tor 6

我为这个目的创建了一个Maven插件,它非常符合我的需求(事实上它现在超过了它们).

它被称为Mavanagaiata,它是开源的,可从Maven Central获得.