【问题标题】:How can I get my GIT tags in the order that they were created?如何按创建顺序获取我的 GIT 标签?
【发布时间】:2021-04-19 02:23:50
【问题描述】:

我遇到了一个问题,我正在使用 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

【问题讨论】:

  • 要显示有关候选人的必要信息,请执行git log --graph --decorate-refs=refs/tags/abc_r6* --oneline --simplify-by-decorationgit show -s --pretty=fuller abc_r6.0.9git show -s --pretty=fuller abc_r6.0.16,然后发布结果。

标签: git versioning setuptools setup.py git-tag


【解决方案1】:

如果--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)'

与:

【讨论】:

    【解决方案2】:

    尝试按creatordate 对标签进行排序:

    git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
    

    【讨论】:

    • 这似乎和 VonC 一个小时前写的一样?
    【解决方案3】:

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

    此选项有一个特殊的值version:refname(或v:refname)来搜索标签名称中的版本号:

    git tag --sort=v:refname
    
    # add '-' if you want them in descending order (biggest version first) :
    git tag --sort=-v:refname
    

    【讨论】:

    • 是的,我在stackoverflow.com/a/22634649/6309 中记录了v:refname。但是如果你想要最新的,就像最近创建的一样,我更喜欢--sort=taggerdate,以便不依赖可能并不总是严格遵循的命名约定。
    猜你喜欢
    • 2021-09-07
    • 2016-06-29
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2012-03-01
    • 2019-08-22
    • 2011-09-10
    • 1970-01-01
    相关资源
    最近更新 更多