19

GitPython lib を使用してリポジトリで最新のタグを取得しようとしています。通常、私は次のようにしていました。

repo = Repo(project_root)
last_tag = str(repo.tags[-1])

しかし、バージョン 1.10 がリリースされると、私は常に 1.9 を取得しています ;(出力git tag -lが同じ順序でリストされていることに関連していることはわかっています。したがって、1.1, 1.10, 1.2, ..., 1.9

問題は、GitPython を使用して最新のタグを取得する方法です。(私は認識してgit tag -l | sort -Vおり、レポオブジェクトを使用せずにこれを解決する方法を知っています。しかし、誰かがこのライブラリでソートされたタグリストを取得する際に何が欠けているかを知っているかもしれません)

カスタムソート機能も常にオプションですが、GitPythonでそれを行う方法はあるのでしょうか?

4

4 に答える 4

4

私はちょうど見て、ソートを担当するコードを見つけました。したがって、並べ替え順序を自分で逆にする以外に方法はありません。

reversed(repo.tags)

必要に応じて、基になる git コマンドを使用して、次の例のように結果を自分で解析することもできます。

repo.git.tag(l=True) # equals git tag -l

そうすれば、できることは何でもgit tagできます (これは、特定のコミットから開始して、トラバーサルの順序でタグをリストするのに興味深い場合があります)。

于 2014-08-11T20:32:18.620 に答える