如何按照创建的顺序获取我的 GIT 标签?

问题描述

我遇到了一个问题,我正在使用 git(版本 2.27.0.windows.1)并且想要排序以便我能够使用最新的。现在得到以下标签列表:

abc_a_r0.1.1   
abc_b_r0.1.2   
abc_c_r1.2.3   
abc_d_r1.2.4   
abc_r5.4.9    
abc_r6.0.0    
abc_r6.0.1    
abc_r6.0.10    
abc_r6.0.11    
abc_r6.0.13    
abc_r6.0.14    
abc_r6.0.15    
abc_r6.0.16    
abc_r6.0.2    
abc_r6.0.3    
abc_r6.0.4    
abc_r6.0.5    
abc_r6.0.6    
abc_r6.0.7    
abc_r6.0.8    
abc_r6.0.9    

如果我使用命令 git describe --tags --match "abc_r*" --abbrev=0,我将获得 abc_r6.0.9 作为输出,而我希望获得最新的标签 abc_r6.0.16。这变得具有挑战性,因为我的 setup.py 看起来像这样:

from setuptools import setup
from setuptools_scm import get_version

def get_requirements():
    with open('requirements.txt') as fd:
        return [req for req in fd.read().splitlines() if req[0].isalpha()]


setup(use_scm_version={'version_scheme': 'guess-next-dev','git_describe_command': 'git describe --match "abc_r*"',install_requires=get_requirements(),)

我正在使用该标签来对我们的 python 包进行版本控制。 任何帮助将非常感激。 TIA

解决方法

检查一下 --sort option of git tag 是否可以提供帮助。

我提到了taggerdate before

git tag --sort=taggerdate

这将显示从最旧到最新的标签。

或者:

git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate refs/tags
# or
git for-each-ref --sort=taggerdate --format '%(tag)'

与:

,

正如@VonC 建议的那样:GOOGLE_APPLICATION_CREDENTIALS 有一个 git tag 选项。

此选项有一个特殊值 --sort(或 version:refname)用于在标签名称中搜索版本号:

v:refname